| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -1,40 +1,23 @@
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using Arction.Wpf.ChartingMVVM.Axes;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using Arction.Wpf.ChartingMVVM.SeriesXY;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using Arction.Wpf.ChartingMVVM;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using Arction.Wpf.Charting;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using Arction.Wpf.Charting.Axes;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using Arction.Wpf.Charting.SeriesXY;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using Arction.Wpf.Charting.Views.ViewXY;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using mseedChart.Core;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using Newtonsoft.Json;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using Newtonsoft.Json.Linq;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using System;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using System.Collections.Generic;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using System.IO;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using System.Linq;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using System.Text;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using System.Threading.Tasks;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using System.Windows;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				using System.Windows.Media;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				namespace mseedChart.MainModule.Models
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    public class WavesModel
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // Constants
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        double YMin = 30000;       // Minimal y-value.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        double YMax = 35000;        // Maximal y-value.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public AxisX GetAxisX(int XMax)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            AxisX axisX = new AxisX();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            axisX.ScrollPosition = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            axisX.ScrollMode = XAxisScrollMode.Stepping;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            axisX.Maximum = XMax;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            axisX.SweepingGap = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //axisX.AxisColor = Colors.Blue;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //axisX.LabelsColor = Colors.Black;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //axisX.GridStripColor = Colors.Black;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //axisX.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            axisX.Title.Visible = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return axisX;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<AxisY> CreateYAxisPingPu(List<StationModel> stationModels, LightningChart curChart)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<AxisY> CreateYAxisChart(List<StationModel> stationModels, LightningChart curChart)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            List<AxisY> axisYList = new List<AxisY>();      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            foreach (var item in stationModels)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                AxisY axisYZ = new AxisY(curChart.ViewXY);
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -43,13 +26,7 @@ namespace mseedChart.MainModule.Models
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    axisYZ.SetRange(item.dz.Min(), item.dz.Max());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.AllowAutoYFit = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.Title.Font = new WpfFont("Segoe UI", 10, false, false);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.Title.Text = string.Format("Ch{0}.Z", item.Name);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.Title.Angle = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //axisYZ.Title.Color = Colors.Black;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //axisYZ.Title.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.Units.Visible = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYList.Add(axisYZ);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //添加N分量波形
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -58,32 +35,22 @@ namespace mseedChart.MainModule.Models
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {                   
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    axisYN.SetRange(item.dn.Min(), item.dn.Max());                    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYN.Title.Font = new WpfFont("Segoe UI", 10, false, false);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYN.Title.Text = string.Format("Ch{0}.N", item.Name);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYN.Title.Angle = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //axisYN.Title.Color = Colors.Black;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYN.Units.Visible = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYList.Add(axisYN);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //添加E分量波形
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                AxisY axisYE = new AxisY(curChart.ViewXY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if (item.de.Count > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {                  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    axisYE.SetRange(item.de.Min(), item.de.Max());                   
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }          
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYE.Title.Font = new WpfFont("Segoe UI", 10, false, false);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYE.Title.Text = string.Format("Ch{0}.E", item.Name);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYE.Title.Angle = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //axisYE.Title.Color = Colors.Black;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYE.Units.Visible = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYList.Add(axisYE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return axisYList;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<SampleDataSeries> GetSampleDataSeriesPingPu(List<StationModel> stationModels, LightningChart curChart, AxisX xAxes, AxisYCollection axisY, double samplingFrequency)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<SampleDataSeries> GetSampleDataSeriesPingPu(List<StationModel> stationModels, LightningChart curChart, AxisX xAxes, List<AxisY> axisY, double samplingFrequency)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            List<SampleDataSeries> sampleList = new List<SampleDataSeries>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -96,6 +63,8 @@ namespace mseedChart.MainModule.Models
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Z
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries seriesZ = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ShowInLegendBox = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.Title.Text = axisY[i * 3].Title.Text;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -113,15 +82,17 @@ namespace mseedChart.MainModule.Models
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(seriesZ.LineStyle.Color, System.Windows.Media.Colors.Gray, 50);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                System.Windows.Media.Color colorCenter = seriesZ.LineStyle.Color;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Clear(); //Remove existing palette steps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, -100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorCenter, 0));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, 100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //seriesZ.ValueRangePalette.Steps.Clear(); //Remove existing palette steps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, -100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorCenter, 0));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, 100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                sampleList.Add(seriesZ);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //E
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries seriesE = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3 + 1]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ShowInLegendBox = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.Title.Text = axisY[i * 3+1].Title.Text;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -148,6 +119,8 @@ namespace mseedChart.MainModule.Models
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //N
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries seriesN = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3 + 2]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ShowInLegendBox = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.Title.Text = axisY[i * 3 + 2].Title.Text;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -175,271 +148,166 @@ namespace mseedChart.MainModule.Models
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return sampleList;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<AxisY> CreateYAxisPingPu(Dictionary<string, StationModel> sms, LightningChart curChart)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        //public List<AxisY> CreateYAxisPingPu(int StationCount, LightningChart curChart)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            List<AxisY> axisYList = new List<AxisY>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            foreach (var item in sms.Keys)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //add Z
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                AxisY axisYZ = new AxisY(curChart.ViewXY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.SetRange(YMin, YMax);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.AllowAutoYFit = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.Title.Font = new WpfFont("Segoe UI", 10, false, false);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.Title.Text = string.Format("Ch{0}.Z", item);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.Title.Angle = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //axisYZ.Title.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYZ.Units.Visible = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYList.Add(axisYZ);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //add E
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                AxisY axisYE = new AxisY(curChart.ViewXY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYE.SetRange(YMin, YMax);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYE.Title.Font = new WpfFont("Segoe UI", 10, false, false);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYE.Title.Text = string.Format("Ch{0}.E", item);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYE.Title.Angle = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYE.Units.Visible = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYList.Add(axisYE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //add N
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                AxisY axisYN = new AxisY(curChart.ViewXY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYN.SetRange(YMin, YMax);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYN.Title.Font = new WpfFont("Segoe UI", 10, false, false);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYN.Title.Text = string.Format("Ch{0}.N", item);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYN.Title.Angle = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYN.Units.Visible = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYList.Add(axisYN);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //for (int i = 0; i < sms.Count; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return axisYList;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<SampleDataSeries> GetSampleDataSeriesPingPu(Dictionary<string, StationModel> sms, LightningChart curChart, AxisX xAxes, AxisYCollection axisY, double samplingFrequency)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<AxisY> CreateAxisYEventTime(MmEvent mmEvent, ViewXY chartV)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            List<SampleDataSeries> sampleList = new List<SampleDataSeries>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (int i = 0; i < sms.Count; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (int i = 0; i< chartV.YAxes.Count; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Z
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries seriesZ = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.LineStyle.Color = System.Windows.Media.Colors.Blue;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.SamplingFrequency = samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.FirstSampleTimeStamp = 1.0 / samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.LineStyle.Width = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.LineStyle.AntiAliasing = LineAntialias.None;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ScrollModePointsKeepLevel = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ScrollingStabilizing = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.AllowUserInteraction = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Set custom colored palette
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(seriesZ.LineStyle.Color, System.Windows.Media.Colors.Black, 50);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                System.Windows.Media.Color colorCenter = seriesZ.LineStyle.Color;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Clear(); //Remove existing palette steps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, -100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorCenter, 0));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, 100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                sampleList.Add(seriesZ);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //E
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries seriesE = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3 + 1]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.LineStyle.Color = System.Windows.Media.Colors.Red;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.SamplingFrequency = samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.FirstSampleTimeStamp = 1.0 / samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.LineStyle.Width = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.LineStyle.AntiAliasing = LineAntialias.None;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ScrollModePointsKeepLevel = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ScrollingStabilizing = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.AllowUserInteraction = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Set custom colored palette
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //System.Windows.Media.Color colorCenter = series.LineStyle.Color;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ValueRangePalette.Steps.Clear(); //Remove existing palette steps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, -100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorCenter, 0));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, 100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                sampleList.Add(seriesE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //N
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries seriesN = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3 + 2]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.LineStyle.Color = System.Windows.Media.Colors.Green;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.SamplingFrequency = samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.FirstSampleTimeStamp = 1.0 / samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.LineStyle.Width = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.LineStyle.AntiAliasing = LineAntialias.None;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ScrollModePointsKeepLevel = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ScrollingStabilizing = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.AllowUserInteraction = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Set custom colored palette
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //System.Windows.Media.Color colorCenter = series.LineStyle.Color;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ValueRangePalette.Steps.Clear(); //Remove existing palette steps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, -100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorCenter, 0));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, 100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                sampleList.Add(seriesN);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                // lineCollection.Lines[i] = new SegmentLine(1+i, chartV.YAxes[0].Minimum, 1+i, chartV.YAxes[0].Maximum);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                LineCollection lineCollection = new LineCollection()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    AssignXAxisIndex = 0,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    AssignYAxisIndex = i,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    Lines = new SegmentLine[] { new SegmentLine(0.5 * i, chartV.YAxes[i].Minimum, 0.5 * i, chartV.YAxes[i].Maximum) },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    ShowInLegendBox = false
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                };
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                PointLineSeries pointLine = new PointLineSeries()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    PointsVisible = true,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    AssignXAxisIndex = 0,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                   AssignYAxisIndex = i,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    ShowInLegendBox = false,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    Points = new SeriesPoint[] { new SeriesPoint(0.5 * i, (chartV.YAxes[i].Minimum+ chartV.YAxes[i].Maximum)/2) },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                };
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                // var value=  chartV.YAxes[i].ValueToCoord(chartV.YAxes[i].Minimum);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                chartV.PointLineSeries.Add(pointLine);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                lineCollection.LineStyle.Color= System.Windows.Media.Colors.Red;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				               chartV.LineCollections.Add(lineCollection);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }         
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return sampleList;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return new List<AxisY>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<SampleDataSeries> GetSampleDataSeriesDieJia(List<StationModel> sms, LightningChart curChart, AxisX xAxes, AxisYCollection axisY, double samplingFrequency)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public MmEvent Json2MmEvent(string jsonFile)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            List<SampleDataSeries> sampleList = new List<SampleDataSeries>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (int i = 0; i < sms.Count; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            using (StreamReader sr = System.IO.File.OpenText(jsonFile))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Z
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries seriesZ = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.LineStyle.Color = System.Windows.Media.Colors.Blue;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.SamplingFrequency = samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.FirstSampleTimeStamp = 1.0 / samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.LineStyle.Width = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.LineStyle.AntiAliasing = LineAntialias.None;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ScrollModePointsKeepLevel = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ScrollingStabilizing = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.AllowUserInteraction = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Set custom colored palette
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(seriesZ.LineStyle.Color, System.Windows.Media.Colors.Black, 50);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                System.Windows.Media.Color colorCenter = seriesZ.LineStyle.Color;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Clear(); //Remove existing palette steps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, -100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorCenter, 0));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, 100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                sampleList.Add(seriesZ);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //E
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries seriesE = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.LineStyle.Color = System.Windows.Media.Colors.Red;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.SamplingFrequency = samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.FirstSampleTimeStamp = 1.0 / samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.LineStyle.Width = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.LineStyle.AntiAliasing = LineAntialias.None;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ScrollModePointsKeepLevel = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ScrollingStabilizing = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.AllowUserInteraction = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Set custom colored palette
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //System.Windows.Media.Color colorCenter = series.LineStyle.Color;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ValueRangePalette.Steps.Clear(); //Remove existing palette steps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, -100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorCenter, 0));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, 100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                sampleList.Add(seriesE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //N
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries seriesN = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.LineStyle.Color = System.Windows.Media.Colors.Green;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.SamplingFrequency = samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.FirstSampleTimeStamp = 1.0 / samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.LineStyle.Width = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.LineStyle.AntiAliasing = LineAntialias.None;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ScrollModePointsKeepLevel = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ScrollingStabilizing = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.AllowUserInteraction = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Set custom colored palette
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //System.Windows.Media.Color colorCenter = series.LineStyle.Color;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ValueRangePalette.Steps.Clear(); //Remove existing palette steps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, -100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorCenter, 0));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, 100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                sampleList.Add(seriesN);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                MmEvent mmEvent = new MmEvent();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.JsonFile = jsonFile;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                string filePath = System.IO.Path.GetDirectoryName(jsonFile);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                string fileName = System.IO.Path.GetFileNameWithoutExtension(jsonFile).TrimEnd('B').TrimEnd('A');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                string ascName = filePath + "\\" + fileName + ".txt";
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.AsciiFile = ascName;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                JsonTextReader reader = new JsonTextReader(sr);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                JArray jArray = (JArray)JToken.ReadFrom(reader);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //解析普通属性和数组混合的Json文件
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //数组0是普通属性集合
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                JObject jobj = (JObject)jArray[0];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                string dateStr = jobj["otime"].ToString();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.EventTime = DateTime.Parse(dateStr);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.EventTimeStr = dateStr;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.X = double.Parse(jobj["lon"].ToString());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.Y = double.Parse(jobj["lat"].ToString());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.Z = double.Parse(jobj["depth"].ToString());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.ML = double.Parse(jobj["ml"].ToString());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.RMS = double.Parse(jobj["rms"].ToString());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.SetEnergy();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.DominantFreq = 15;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.Phases = new Dictionary<string, int>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                List<double> DominantFreqlist = new List<double>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                JArray phaseArr = JArray.FromObject(jobj["phases"]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                List<double> DominantFreqList = new List<double>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                for (int i = 0; i < phaseArr.Count; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if (phaseArr[i]["first_motion_direct"] != null)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        mmEvent.Phases.Add(phaseArr[i]["id"].ToString().Substring(3, 3),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            int.Parse(phaseArr[i]["first_motion_direct"].ToString()));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if (phaseArr[i]["fmd_semi_period"] != null)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        DominantFreqlist.Add(double.Parse(phaseArr[i]["fmd_semi_period"].ToString()));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if (DominantFreqlist.Count > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if (DominantFreqlist.Count > 3)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        double min = DominantFreqlist.Min();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        double max = DominantFreqlist.Max();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        DominantFreqlist.Remove(min);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        DominantFreqlist.Remove(max);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        mmEvent.DominantFreq = DominantFreqlist.Sum() / (double)DominantFreqlist.Count;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        mmEvent.DominantFreq = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                return mmEvent;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return sampleList;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //return null;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<AxisY> CreateYAxis(int channelCount, LightningChart curChart)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public MmEvent Json2MmEventWithPara(string jsonFile)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            List<AxisY> axisYList = new List<AxisY>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (int i = 0; i < channelCount; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            using (StreamReader sr = System.IO.File.OpenText(jsonFile))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                AxisY axisY = new AxisY(curChart.ViewXY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //AxisY axisY = new AxisY();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisY.SetRange(YMin, YMax);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisY.Title.Font = new WpfFont("Segoe UI", 10, false, false);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisY.Title.Text = string.Format("Ch {0}", i + 1);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisY.Title.Angle = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisY.Units.Visible = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                axisYList.Add(axisY);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                MmEvent mmEvent = new MmEvent();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.JsonFile = jsonFile;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                string filePath = System.IO.Path.GetDirectoryName(jsonFile);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                string fileName = System.IO.Path.GetFileNameWithoutExtension(jsonFile).TrimEnd('B').TrimEnd('A');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //fileName=fileName.TrimEnd('B');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //fileName.TrimEnd('A');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                string ascName = filePath + "\\" + fileName + ".txt";
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mmEvent.AsciiFile = ascName;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                JsonTextReader reader = new JsonTextReader(sr);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                JArray jArray = (JArray)JToken.ReadFrom(reader);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //解析普通属性和数组混合的Json文件
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //数组0是普通属性集合
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                JObject jobj = (JObject)jArray[0];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                string dateStr = jobj["otime"].ToString();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //LocalSqLiteServerAccess localSqLiteServerAccess = new LocalSqLiteServerAccess();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //int selectResult = localSqLiteServerAccess.SelectWithTime(dateStr);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                int selectResult = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if (selectResult < 1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    return null;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    mmEvent.Phases = new Dictionary<string, int>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    List<double> Semiperiodlist = new List<double>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    JArray phaseArr = JArray.FromObject(jobj["phases"]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    List<double> DominantFreqList = new List<double>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    for (int i = 0; i < phaseArr.Count; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        if (phaseArr[i]["first_motion_direct"] != null)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            mmEvent.Phases.Add(phaseArr[i]["id"].ToString().Substring(3, 3),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                int.Parse(phaseArr[i]["first_motion_direct"].ToString()));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        if (phaseArr[i]["fmd_semi_period"] != null)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            Semiperiodlist.Add(double.Parse(phaseArr[i]["fmd_semi_period"].ToString()));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if (Semiperiodlist.Count > 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        if (Semiperiodlist.Count > 3)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            double min = Semiperiodlist.Min();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            double max = Semiperiodlist.Max();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            Semiperiodlist.Remove(min);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            Semiperiodlist.Remove(max);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            mmEvent.DominantFreq = Semiperiodlist.Sum() / (double)Semiperiodlist.Count;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            mmEvent.DominantFreq = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    JArray ampsArr = JArray.FromObject(jobj["amps"]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    List<float> ampsArrList = new List<float>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    for (int i = 0; i < ampsArr.Count; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        if (ampsArr[i]["amp"] != null)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            ampsArrList.Add(float.Parse(ampsArr[i]["amp"].ToString()));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    MmEvent.SetAmp(ampsArrList);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    return mmEvent;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return axisYList;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        public List<SampleDataSeries> GetSampleDataSeries(int channelCount, LightningChart curChart, AxisX xAxes, AxisYCollection axisY, double samplingFrequency)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            List<SampleDataSeries> sampleList = new List<SampleDataSeries>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for (int i = 0; i < channelCount; i++)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                SampleDataSeries series = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.SampleFormat = SampleFormat.DoubleFloat;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.SamplingFrequency = samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.FirstSampleTimeStamp = 1.0 / samplingFrequency;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.LineStyle.Width = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.LineStyle.AntiAliasing = LineAntialias.None;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.ScrollModePointsKeepLevel = 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.ScrollingStabilizing = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.AllowUserInteraction = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                //Set custom colored palette
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                System.Windows.Media.Color colorCenter = series.LineStyle.Color;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.ValueRangePalette.Steps.Clear(); //Remove existing palette steps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.ValueRangePalette.Steps.Add(new PaletteStep(series.ValueRangePalette, colorEdge, -100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.ValueRangePalette.Steps.Add(new PaletteStep(series.ValueRangePalette, colorCenter, 0));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                series.ValueRangePalette.Steps.Add(new PaletteStep(series.ValueRangePalette, colorEdge, 100));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                sampleList.Add(series);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return sampleList;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |