private void LoadAndAssignValue(FlightAnalysisChartGroupViewModel groupViewModel, KeyValuePair<string, IEnumerable<string>> groupItem, AircraftDataAnalysisModel1.WinRT.Domain.AircraftAnalysisDataLoader dataLoader) { var vm = new FlightAnalysisChartSerieViewModel(); int j = 0; foreach (var parameterID in groupItem.Value) { this.LoadSimpleDataPoints(vm, parameterID, dataLoader, j); if (j == 0) { groupViewModel.Serie1Definition = new SerieDefinitionViewModel(groupViewModel) { ParameterID = parameterID }; } else if (j == 1) { groupViewModel.Serie2Definition = new SerieDefinitionViewModel(groupViewModel) { ParameterID = parameterID }; } else if (j == 2) { groupViewModel.Serie3Definition = new SerieDefinitionViewModel(groupViewModel) { ParameterID = parameterID }; } j++; } groupViewModel.DataSerie = vm; }
private void SetGroupDisplay(AircraftDataAnalysisModel1.WinRT.DataModel.FlightAnalysisChartGroupViewModel groupViewModel, int roundedSecond) { if (groupViewModel == null || groupViewModel.DataSerie == null || groupViewModel.DataSerie.Count <= 0) return; var findedPoint = groupViewModel.DataSerie.First( new Func<SimpleDataPoint, bool>( delegate(SimpleDataPoint pt) { if (pt.Second == roundedSecond) return true; return false; })); if (findedPoint == null) return; if (groupViewModel.Serie1Definition != null) { groupViewModel.Serie1Definition.SetCurrentDisplayPoint( findedPoint.Second, findedPoint.Value1); } if (groupViewModel.Serie2Definition != null) { groupViewModel.Serie2Definition.SetCurrentDisplayPoint( findedPoint.Second, findedPoint.Value2); } if (groupViewModel.Serie3Definition != null) { groupViewModel.Serie3Definition.SetCurrentDisplayPoint( findedPoint.Second, findedPoint.Value3); } }
private FlightAnalysisChartGroupViewModel SwitchGroup(int i, KeyValuePair<string, IEnumerable<string>> groupItem, AircraftDataAnalysisModel1.WinRT.Domain.AircraftAnalysisDataLoader dataLoader) { FlightAnalysisChartGroupViewModel groupViewModel = null; switch (i) { case 0: { this.Group1 = new FlightAnalysisChartGroupViewModel(this); this.LoadAndAssignValue(this.Group1, groupItem, dataLoader); groupViewModel = this.Group1; break; } case 1: { this.Group2 = new FlightAnalysisChartGroupViewModel(this); this.LoadAndAssignValue(this.Group2, groupItem, dataLoader); groupViewModel = this.Group2; break; } case 2: { this.Group3 = new FlightAnalysisChartGroupViewModel(this); this.LoadAndAssignValue(this.Group3, groupItem, dataLoader); groupViewModel = this.Group3; break; } case 3: { this.Group4 = new FlightAnalysisChartGroupViewModel(this); this.LoadAndAssignValue(this.Group4, groupItem, dataLoader); groupViewModel = this.Group4; break; } case 4: { this.Group5 = new FlightAnalysisChartGroupViewModel(this); this.LoadAndAssignValue(this.Group5, groupItem, dataLoader); groupViewModel = this.Group5; break; } case 5: { this.Group6 = new FlightAnalysisChartGroupViewModel(this); this.LoadAndAssignValue(this.Group6, groupItem, dataLoader); groupViewModel = this.Group6; break; } case 6: { this.Group7 = new FlightAnalysisChartGroupViewModel(this); this.LoadAndAssignValue(this.Group7, groupItem, dataLoader); groupViewModel = this.Group7; break; } default: break; } return groupViewModel; }
private void AssignPointMapperValue(AircraftDataAnalysisModel1.WinRT.Domain.AircraftAnalysisDataLoader dataLoader, Dictionary<int, SimpleDataPoint> pointMapper, ref KeyValuePair<string, IEnumerable<string>> group1, ref int counter) { foreach (var id in group1.Value) { counter++; var rawDatas = dataLoader.GetRawData(id); foreach (var raw in rawDatas) { if (pointMapper.ContainsKey(raw.Second)) { if (counter == 1) { pointMapper[raw.Second].Value1 = raw.Values[0]; } else if (counter == 2) { pointMapper[raw.Second].Value2 = raw.Values[0]; } else if (counter == 3) { pointMapper[raw.Second].Value3 = raw.Values[0]; } } } } }
private void InitFinalizeRunAsync(AircraftDataAnalysisModel1.WinRT.Domain.AircraftAnalysisDataLoader dataLoader, CategoryXAxis Xaxis1, NumericYAxis Yaxis1, CategoryXAxis Xaxis2, NumericYAxis Yaxis2, FlightAnalysisSubLiteViewModel viewModel, List<Series> series, FlightAnalysisChartSerieViewModel chartviewModel) { this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() => { viewModel.ChartViewModel = chartviewModel; this.DataContext = viewModel; viewModel.SelectedParameterIDChanged += viewModel_SelectedParameterIDChanged; // })); //this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, // new Windows.UI.Core.DispatchedHandler(() => //{ this.DataLoader = dataLoader; Xaxis1.DataContext = chartviewModel; Yaxis1.DataContext = chartviewModel; Xaxis2.DataContext = chartviewModel; Yaxis2.DataContext = chartviewModel; foreach (var se in series) { this.tracker1.Series.Add(se); } this.progbar1.IsIndeterminate = false; this.progbar1.Visibility = Windows.UI.Xaml.Visibility.Collapsed; })); }
private void InitializeAsync(SubEditChartNavigationParameter parameter, AircraftDataAnalysisModel1.WinRT.Domain.AircraftAnalysisDataLoader dataLoader) { var Xaxis1 = this.tracker1.Axes["xm1XAxis1"] as CategoryXAxis; var Yaxis1 = this.tracker1.Axes["xm1YAxis1"] as NumericYAxis; var Xaxis2 = this.tracker1.Axes["xm1XAxis2"] as CategoryXAxis; var Yaxis2 = this.tracker1.Axes["xm1YAxis2"] as NumericYAxis; Task.Run(new Action(async () => { var viewModel = new AircraftDataAnalysisWinRT.DataModel.FlightAnalysisSubLiteViewModel(); List<string> parameterIDs = new List<string>(); GetThisParameterID(parameter, parameterIDs); //grouped : var groupedIDs = AircraftDataAnalysisModel1.WinRT.DataModel.FlightAnalysisChartGroupFactory.CalculateBindingGroups(parameterIDs); if (groupedIDs == null) return; var groupCount = groupedIDs.Count(); if (groupCount <= 0) return; //只能两个分组,X轴和Y轴 dataLoader.LoadRawDataAsync(parameterIDs); //第一个分组 List<Series> series = new List<Series>(); Dictionary<int, SimpleDataPoint> pointMapper = new Dictionary<int, SimpleDataPoint>(); for (int i = 0; i < dataLoader.CurrentFlight.EndSecond; i++) { pointMapper.Add(i, new SimpleDataPoint() { Second = i }); } var sorted = from one in pointMapper.Values orderby one.Second ascending select one; FlightAnalysisChartSerieViewModel chartviewModel = new FlightAnalysisChartSerieViewModel(sorted); var group1 = groupedIDs.First(); int counter = 0; int counterStart = 0; viewModel.Group1ID = group1.Key; AssignPointMapperValue(dataLoader, pointMapper, ref group1, ref counter); await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() => { AssignSerie(Xaxis1, Yaxis1, series, chartviewModel, counter, counterStart, parameterIDs); })); if (groupCount > 1) { counterStart = counter; var group2 = groupedIDs.ElementAt(1); viewModel.Group2ID = group2.Key; AssignPointMapperValue(dataLoader, pointMapper, ref group2, ref counter); await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() => { AssignSerie(Xaxis2, Yaxis2, series, chartviewModel, counter, counterStart, parameterIDs); })); } InitFinalizeRunAsync(dataLoader, Xaxis1, Yaxis1, Xaxis2, Yaxis2, viewModel, series, chartviewModel); })); }
private void InitializeExtremumInfo(ExtremumReportSubEditChartNavigationParameter parameter, AircraftDataAnalysisModel1.WinRT.Domain.AircraftAnalysisDataLoader dataLoader) { var Xaxis1 = this.tracker1.Axes["xm1XAxis1"] as CategoryXAxis; var Yaxis1 = this.tracker1.Axes["xm1YAxis1"] as NumericYAxis; var Xaxis2 = this.tracker1.Axes["xm1XAxis2"] as CategoryXAxis; var Yaxis2 = this.tracker1.Axes["xm1YAxis2"] as NumericYAxis; Task.Run(new Action(async () => { var viewModel = new AircraftDataAnalysisWinRT.DataModel.FlightAnalysisSubLiteViewModel(); List<string> parameterIDs = new List<string>(); GetThisParameterID(parameter, parameterIDs); //grouped : var groupedIDs = AircraftDataAnalysisModel1.WinRT.DataModel.FlightAnalysisChartGroupFactory.CalculateBindingGroups(parameterIDs); if (groupedIDs == null) return; var groupCount = groupedIDs.Count(); if (groupCount <= 0) return; //极值报表只能一个分组,X轴和Y轴,必须两个轴都设置,才能出红蓝线 dataLoader.LoadRawDataAsync(parameterIDs); //第一个分组 List<Series> series = new List<Series>(); Dictionary<int, SimpleDataPoint> pointMapper = new Dictionary<int, SimpleDataPoint>(); for (int i = 0; i < dataLoader.CurrentFlight.EndSecond; i++) { pointMapper.Add(i, new SimpleDataPoint() { Second = i }); } var sorted = from one in pointMapper.Values orderby one.Second ascending select one; FlightAnalysisChartSerieViewModel chartviewModel = new FlightAnalysisChartSerieViewModel(sorted); var group1 = groupedIDs.First(); int counter = 0; int counterStart = 0; viewModel.Group1ID = group1.Key; AssignPointMapperValue(dataLoader, pointMapper, ref group1, ref counter); await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() => { AssignSerie(Xaxis1, Yaxis1, series, chartviewModel, counter, counterStart, parameterIDs); })); if (true || groupCount > 1) { counterStart = 0;//counter; var group2 = groupedIDs.First(); //groupedIDs.ElementAt(1); viewModel.Group2ID = group2.Key; AssignPointMapperValue(dataLoader, pointMapper, ref group2, ref counter); counter = 1; await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() => { AssignSerie(Xaxis2, Yaxis2, series, chartviewModel, counter, counterStart, parameterIDs); })); } viewModel.ChartViewModel = chartviewModel; this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() => { this.TitleLegend.Visibility = Windows.UI.Xaml.Visibility.Collapsed; //必须去掉Legend,因为两条线是可能出两个Legend的 //加参数的Stack也要去掉 this.stackAddParam.Visibility = Windows.UI.Xaml.Visibility.Collapsed; //Yaxis2.Visibility = Windows.UI.Xaml.Visibility.Collapsed; Yaxis2.LabelSettings.Foreground = new SolidColorBrush(Windows.UI.Colors.White); //this.DataContext = viewModel; //viewModel.SelectedParameterIDChanged += viewModel_SelectedParameterIDChanged; })); this.InitFinalizeRunAsync(dataLoader, Xaxis1, Yaxis1, Xaxis2, Yaxis2, viewModel, series, chartviewModel); })); }