/// <summary> /// 趋势图的选择点事件数据源 /// </summary> public void ChartSelectionBehaviorSelection(DateTime time) { var aircraft = Aircrafts.Where( o => o.OperationHistories.Any(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time)) && o.AircraftBusinesses.Any(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time))); #region 座级机型XML文件的读写 var xmlConfig = XmlConfigs.FirstOrDefault(p => p.ConfigType.Equals("座级机型", StringComparison.OrdinalIgnoreCase)); XElement regionalColor = null; var colorConfig = XmlSettings.FirstOrDefault(p => p.SettingType.Equals("颜色配置", StringComparison.OrdinalIgnoreCase)); if (colorConfig != null && XElement.Parse(colorConfig.SettingContent) .Descendants("Type") .Any(p => p.Attribute("TypeName").Value.Equals("座级", StringComparison.OrdinalIgnoreCase))) { regionalColor = XElement.Parse(colorConfig.SettingContent) .Descendants("Type") .FirstOrDefault(p => p.Attribute("TypeName").Value.Equals("座级", StringComparison.OrdinalIgnoreCase)); } XElement typeColor = null; if (colorConfig != null && XElement.Parse(colorConfig.SettingContent) .Descendants("Type") .Any(p => p.Attribute("TypeName").Value.Equals("机型", StringComparison.OrdinalIgnoreCase))) { typeColor = XElement.Parse(colorConfig.SettingContent) .Descendants("Type") .FirstOrDefault( p => p.Attribute("TypeName").Value.Equals("机型", StringComparison.OrdinalIgnoreCase)); } if (xmlConfig != null) { var aircraftRegionalList = new List<FleetAircraftTypeComposition>(); //座级饼图集合 var aircraftTypeList = new List<FleetAircraftTypeComposition>(); //机型饼图集合 var xelement = XElement.Parse(xmlConfig.ConfigContent) .Descendants("DateTime") .FirstOrDefault(p => Convert.ToDateTime(p.Attribute("EndOfMonth").Value) == time); if (xelement != null) { foreach (var type in xelement.Descendants("Type")) { if (type.Attribute("TypeName").Value.Equals("座级", StringComparison.OrdinalIgnoreCase)) { foreach (var item in type.Descendants("Item")) { var fleetAircraftTypeComposition = new FleetAircraftTypeComposition { AircraftRegional = item.Attribute("Name").Value, AirNum = Convert.ToInt32(item.Value), AirTt = item.Value + " 架,占 " + item.Attribute("Percent").Value }; if (regionalColor != null) { var firstOrDefault = regionalColor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name") .Value.Equals(fleetAircraftTypeComposition.AircraftRegional, StringComparison.OrdinalIgnoreCase)); if (firstOrDefault != null) fleetAircraftTypeComposition.Color = firstOrDefault.Attribute("Color").Value; } if (fleetAircraftTypeComposition.AirNum > 0) { aircraftRegionalList.Add(fleetAircraftTypeComposition); } } } else if (type.Attribute("TypeName").Value.Equals("机型", StringComparison.OrdinalIgnoreCase)) { foreach (var item in type.Descendants("Item")) { var fleetAircraftTypeComposition = new FleetAircraftTypeComposition { AircraftRegional = item.Attribute("Name").Value, AirNum = Convert.ToInt32(item.Value), AirTt = item.Value + " 架,占 " + item.Attribute("Percent").Value }; if (typeColor != null) { var firstOrDefault = typeColor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name") .Value.Equals(fleetAircraftTypeComposition.AircraftRegional, StringComparison.OrdinalIgnoreCase)); if (firstOrDefault != null) fleetAircraftTypeComposition.Color = firstOrDefault.Attribute("Color").Value; } if (fleetAircraftTypeComposition.AirNum > 0) { aircraftTypeList.Add(fleetAircraftTypeComposition); } } } } } FleetAircraftRegionalCollection = aircraftRegionalList; FleetAircraftTypeCollection = aircraftTypeList; } #endregion //飞机详细数据 AircraftCollection = Commonmethod.GetAircraftByTime(aircraft.ToList(), time); }
/// <summary> /// 趋势图的选择点事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ChartSelectionBehavior_SelectionChanged(object sender, Telerik.Windows.Controls.ChartView.ChartSelectionChangedEventArgs e) { Telerik.Charting.DataPoint SelectedPoint = (sender as Telerik.Windows.Controls.ChartView.ChartSelectionBehavior).Chart.SelectedPoints.FirstOrDefault(p => (p.Presenter as CategoricalSeries).Visibility == Visibility.Visible); if (SelectedPoint != null) { FleetAircraftRegionalTrend fleetaircraftregionaltrend = SelectedPoint.DataItem as FleetAircraftRegionalTrend; if (SelectedTime != fleetaircraftregionaltrend.DateTime) { //选中时间点 SelectedTime = fleetaircraftregionaltrend.DateTime; DateTime time = Convert.ToDateTime(fleetaircraftregionaltrend.DateTime).AddMonths(1).AddDays(-1); var aircraft = this.ViewAircraft. Where(o => o.OperationHistories.Any(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time)) && o.AircraftBusinesses.Any(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time))); #region 座级机型XML文件的读写 var xmlconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "座级机型"); XElement regionalcolor = null; XmlConfig colorconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "颜色配置"); if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "座级")) { regionalcolor = colorconfig.XmlContent.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "座级"); } XElement typecolor = null; if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "机型")) { typecolor = colorconfig.XmlContent.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "机型"); } if (xmlconfig != null) { List<FleetAircraftTypeComposition> AircraftRegionalList = new List<FleetAircraftTypeComposition>();//座级饼图集合 List<FleetAircraftTypeComposition> AircraftTypeList = new List<FleetAircraftTypeComposition>();//机型饼图集合 XElement xelement = xmlconfig.XmlContent.Descendants("DateTime").FirstOrDefault(p => Convert.ToDateTime(p.Attribute("EndOfMonth").Value) == time); if (xelement != null) { foreach (XElement type in xelement.Descendants("Type")) { if (type.Attribute("TypeName").Value == "座级") { foreach (XElement item in type.Descendants("Item")) { FleetAircraftTypeComposition fleetaircrafttypecomposition = new FleetAircraftTypeComposition(); fleetaircrafttypecomposition.AircraftRegional = item.Attribute("Name").Value; fleetaircrafttypecomposition.AirNum = Convert.ToInt32(item.Value); fleetaircrafttypecomposition.AirTt = item.Value + " 架,占 " + item.Attribute("Percent").Value; if (regionalcolor != null) { fleetaircrafttypecomposition.Color = regionalcolor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircrafttypecomposition.AircraftRegional).Attribute("Color").Value; } if (fleetaircrafttypecomposition.AirNum > 0) { AircraftRegionalList.Add(fleetaircrafttypecomposition); } } } else if (type.Attribute("TypeName").Value == "机型") { foreach (XElement item in type.Descendants("Item")) { FleetAircraftTypeComposition fleetaircrafttypecomposition = new FleetAircraftTypeComposition(); fleetaircrafttypecomposition.AircraftRegional = item.Attribute("Name").Value; fleetaircrafttypecomposition.AirNum = Convert.ToInt32(item.Value); fleetaircrafttypecomposition.AirTt = item.Value + " 架,占 " + item.Attribute("Percent").Value; if (typecolor != null) { fleetaircrafttypecomposition.Color = typecolor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircrafttypecomposition.AircraftRegional).Attribute("Color").Value; } if (fleetaircrafttypecomposition.AirNum > 0) { AircraftTypeList.Add(fleetaircrafttypecomposition); } } } } } FleetAircraftRegionalCollection = AircraftRegionalList; FleetAircraftTypeCollection = AircraftTypeList; } #endregion //飞机详细数据 AircraftCollection = commonmethod.GetAircraftByTime(aircraft.ToList(), time); } } }