| 
					
				 | 
			
			
				@@ -34,6 +34,9 @@ using System.Windows.Controls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using SciChart.Charting.Model.ChartData;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using MECF.Framework.UI.Client.Converter;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using MECF.Framework.UI.Client.CenterViews.Operations.RealTime;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using SciChart.Core.Extensions;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System.Linq.Expressions;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System.Reflection;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -106,6 +109,8 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             get { return _ParameterNodes; }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             set { _ParameterNodes = value; NotifyOfPropertyChange("ParameterNodes"); }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public List<ParameterNode> DoubleParameterNodes { get; set; }=new List<ParameterNode>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public ObservableCollection<IRenderableSeries> SelectedData { get; set; }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public ObservableCollection<IRenderableSeries> SynSelectedData { get; set; }
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -292,6 +297,12 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             DisplayName = "Process Detail";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             RecipeDatas = recipes;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ParameterNodes = _realtimeProvider.GetParameters(out var dict);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DoubleParameterNodes = _realtimeProvider.GetParameters(out dict).ToList();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int j = 0; j < ParameterNodes.Count; j++)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ParameterNodes[j].IsVisibilityParentNode = Visibility.Hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DoubleParameterNodes[j].IsVisibilityParentNode = Visibility.Hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             _processDetailDisplayDic = dict;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (recipes == null || recipes.Count == 0)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -452,11 +463,6 @@ 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)
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -621,34 +627,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)
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -657,6 +637,39 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// 获取时间列表
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary>
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -699,14 +712,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 +732,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 +741,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 +754,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 +864,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)
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -884,10 +884,8 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //uncheck tree node
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     (cp.Tag as ParameterNode).Selected = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     RefreshTreeStatusToParent(cp.Tag as ParameterNode);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     SelectedData.Remove(cp);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (SynSelectedData.Contains(cp)) { SynSelectedData.Remove(cp); }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1236,51 +1234,37 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void RefresCharView()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.view.sciChart.ZoomExtents();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void BackPan()//前移
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ((_directionByte & 0x01) == 1)//x
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // LOG.Info($"A BackPan.X:scale{XScale},{VisibleRangeTime.Min}:{VisibleRangeTime.Max}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (VisibleRangeTime is DoubleRange range)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    VisibleRangeTime = new DoubleRange(range.Min - XScale, range.Max - XScale);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // LOG.Info($"BackPan.X:scale{XScale},{VisibleRangeTime.Min}:{VisibleRangeTime.Max}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ((_directionByte & 0x02) == 2)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // LOG.Info($"A BackPan.Y:scale{YScale},{VisibleRangeValue.Min}:{VisibleRangeValue.Max}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (VisibleRangeValue is DoubleRange range)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    VisibleRangeValue = new DoubleRange(range.Min - YScale, range.Max - YScale);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //LOG.Info($"BackPan.Y:scale{YScale},{VisibleRangeValue.Min}:{VisibleRangeValue.Max}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void ForwardPan()//后移
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }   
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ArrowClick(string direction)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ((_directionByte & 0x01) == 1)//x
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            switch (direction)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // LOG.Info($"A ForwardPan.X:scale{XScale},{VisibleRangeTime.Min}:{VisibleRangeTime.Max}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (VisibleRangeTime is DoubleRange range)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    VisibleRangeTime = new DoubleRange(range.Min + XScale, range.Max + XScale);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // LOG.Info($"ForwardPan.X:scale{XScale},{VisibleRangeTime.Min}:{VisibleRangeTime.Max}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ((_directionByte & 0x02) == 2)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //LOG.Info($"A ForwardPan.Y:scale{YScale},{VisibleRangeValue.Min}:{VisibleRangeValue.Max}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (VisibleRangeValue is DoubleRange range)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    VisibleRangeValue = new DoubleRange(range.Min + YScale, range.Max + YScale);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //LOG.Info($"ForwardPan.Y:scale{YScale},{VisibleRangeValue.Min}:{VisibleRangeValue.Max}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                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 ZoomInClick()//放大
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             double scale = 0;
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1374,7 +1358,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     allCheckNode.AddRange(GetAllCheckedLeafNode(x));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                allCheckNode.ForEach(x => { ParameterCheck(x); });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                allCheckNode.ForEach(x => { ParameterCheck(x,SelectedData); });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1445,7 +1429,6 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public class ProcessDataLot : NotifiableItem
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private string _guid;
 
			 |