private void SetYFormater(EGraphRenderType inGraphType) { string val = ""; if (inGraphType == EGraphRenderType.Temperature) { val = "°C"; YFormatter = value => value + "°C"; } else if (inGraphType == EGraphRenderType.AirPressure) { val = "mbar"; YFormatter = value => value + "mbar"; } else if (inGraphType == EGraphRenderType.Humidity) { val = "%"; YFormatter = value => value + "%"; } else if (inGraphType == EGraphRenderType.WindSpeed) { val = "km/h"; YFormatter = value => value + "km/h"; } cartesianCart_Graphic.AxisY.First().LabelFormatter = new Func <double, string>(value => value + val); //YFormatter = value => value + val; }
// Work with Graphic functions #region Refresh Graphic private void RefreshGraphic(EGraphRenderType inGraphType, int inGraphicRenderDays, int inGraphHoursFrequency) { if (SeriesCollection == null) { SeriesCollection = new SeriesCollection(); } SeriesCollection.Clear(); SetYFormater(inGraphType); Labels = GetGraphLabels(inGraphicRenderDays, inGraphHoursFrequency).ToArray(); if (CheckedCitiesList != null && CheckedCitiesList.Count > 0) { foreach (var city in CheckedCitiesList) { if (city.IsRenderedOnGraph) { LineSeries tmpCurentCityLineSeries = new LineSeries() { Title = city.Name, Values = GetGraphicCityValuesByGraphRenderType(city, inGraphType, inGraphicRenderDays, inGraphHoursFrequency), }; SeriesCollection.Add(tmpCurentCityLineSeries); } } } }
private ChartValues <double> GetGraphicCityValuesByGraphRenderType(CityModel inCity, EGraphRenderType inGraphType, int inGraphicRenderDays, int inGraphicHoursFrequency, bool inDailyMaxTemps = true) { ChartValues <double> toRetValues = new ChartValues <double>(); List <double> tmpValues = new List <double>(); if (inCity != null && inCity.CityWeather != null) { if (inGraphType == EGraphRenderType.Temperature) { //foreach (var hour in inCity.CityWeather.Hourly) //{ // tmpValues.Add(hour.Temp); //} if (inGraphicRenderDays < 3) { for (int i = 0; i < inCity.CityWeather.Hourly.Count; i = i + inGraphicHoursFrequency) { tmpValues.Add(inCity.CityWeather.Hourly[i].Temp); } tmpValues.Add(inCity.CityWeather.Hourly.Last().Temp); } else { for (int i = 0; i < inGraphicRenderDays; i++) { tmpValues.Add(inCity.CityWeather.Daily[i].Temp.Max); } } } else if (inGraphType == EGraphRenderType.AirPressure) { if (inGraphicRenderDays < 3) { for (int i = 0; i < inCity.CityWeather.Hourly.Count; i = i + inGraphicHoursFrequency) { tmpValues.Add(inCity.CityWeather.Hourly[i].Pressure); } tmpValues.Add(inCity.CityWeather.Hourly.Last().Pressure); } else { for (int i = 0; i < inGraphicRenderDays; i++) { tmpValues.Add(inCity.CityWeather.Daily[i].Pressure); } } } else if (inGraphType == EGraphRenderType.Humidity) { if (inGraphicRenderDays < 3) { for (int i = 0; i < inCity.CityWeather.Hourly.Count; i = i + inGraphicHoursFrequency) { tmpValues.Add(inCity.CityWeather.Hourly[i].Humidity); } tmpValues.Add(inCity.CityWeather.Hourly.Last().Humidity); } else { for (int i = 0; i < inGraphicRenderDays; i++) { tmpValues.Add(inCity.CityWeather.Daily[i].Humidity); } } } else if (inGraphType == EGraphRenderType.WindSpeed) { if (inGraphicRenderDays < 3) { for (int i = 0; i < inCity.CityWeather.Hourly.Count; i = i + inGraphicHoursFrequency) { tmpValues.Add(inCity.CityWeather.Hourly[i].Wind_Speed); } tmpValues.Add(inCity.CityWeather.Hourly.Last().Wind_Speed); } else { for (int i = 0; i < inGraphicRenderDays; i++) { tmpValues.Add(inCity.CityWeather.Daily[i].Wind_Speed); } } } } toRetValues.AddRange(tmpValues); return(toRetValues); }