public WeatherModel GetWeatherWebInfo() { var refModel = GetWeatherInfo(); var model = new WeatherModel() { IsCorrect = refModel.IsCorrect, LastUpdateDate = refModel.LastUpdateDate, Daily = new List <DailyWeatherInfoModel>() }; if (model.IsCorrect) { foreach (var day in refModel.Daily) { var dayRow = new DailyWeatherInfoModel { Tempature = day.Tempature, FullImage = null, IconImage = null, IconUrl = day.IconUrl, Info = day.Info }; model.Daily.Add(dayRow); } } return(model); }
// Loads the daily wind speed chart /// <summary> /// Loads the daily wind speed chart. /// </summary> private async void LoadDayilyWindSpeedChart() { try { dailyWeather = await DailyWeatherInfoProcessor.LoadDailyWeather(currentWeather.Coord.Lon, currentWeather.Coord.Lat); } catch (Exception) { Console.WriteLine("Exception occurred"); } WeatherChart.Series.Clear(); WeatherChart.Header = "Wind Speed"; // Adding horizontal axis to chart primaryAxis.Header = "Date"; // Adding vertical axis to chart secondaryAxis.Header = "Speed [m/s]"; // Preparing data for Chart DailyWeatherForecast dailyData = new DailyWeatherForecast(dailyWeather); // Creating AdornmentInfo ChartAdornmentInfo adornmentInfo = new ChartAdornmentInfo() { ShowMarker = true, Symbol = ChartSymbol.Diamond, SymbolHeight = 5, SymbolWidth = 5, SymbolInterior = new SolidColorBrush(Colors.Black), ShowLabel = true, LabelPosition = AdornmentsLabelPosition.Inner, Foreground = new SolidColorBrush(Colors.White), BorderBrush = new SolidColorBrush(Colors.Black), Background = new SolidColorBrush(Colors.DarkGray), BorderThickness = new Thickness(1), Margin = new Thickness(1), FontStyle = FontStyles.Italic, FontFamily = new FontFamily("Calibri"), FontSize = 11 }; //Initialize needed Line Series LineSeries seriesWindSpeed = new LineSeries() { ItemsSource = dailyData.windSpeed, XBindingPath = "Date", YBindingPath = "WindSpeed", Label = "Wind Speed", LegendIcon = ChartLegendIcon.Circle, AdornmentsInfo = adornmentInfo }; //Adding Series to Chart WeatherChart.Series.Add(seriesWindSpeed); }
// Copies temperature data from ApiLibrary structures to new structures prepared for chart display /// <summary> /// Copies temperature data from ApiLibrary structures to new structures prepared for chart display. /// </summary> /// <param name="dailyForecastSource">DailyWeatherInfoModel object containing day temperature information.</param> public DailyTemperatureForecast(DailyWeatherInfoModel dailyForecastSource) { MorningTemperature = new List <TempForecastData>(); DayTemperature = new List <TempForecastData>(); EveningTemperature = new List <TempForecastData>(); NightTemperature = new List <TempForecastData>(); int i = 0; foreach (var item in dailyForecastSource.Daily) { string requiredDate = NormalizationOperations.NormalizeDate(dailyForecastSource.Daily[i].Dt); MorningTemperature.Add(new TempForecastData(NormalizationOperations.NormalizeTemperature(dailyForecastSource.Daily[i].Temp.Morn), requiredDate)); DayTemperature.Add(new TempForecastData(NormalizationOperations.NormalizeTemperature(dailyForecastSource.Daily[i].Temp.Day), requiredDate)); EveningTemperature.Add(new TempForecastData(NormalizationOperations.NormalizeTemperature(dailyForecastSource.Daily[i].Temp.Eve), requiredDate)); NightTemperature.Add(new TempForecastData(NormalizationOperations.NormalizeTemperature(dailyForecastSource.Daily[i].Temp.Night), requiredDate)); i++; } }
// Copies daily weather forecast data from ApiLibrary structures to new structures prepared for chart display /// <summary> /// Copies daily weather forecast data from ApiLibrary structures to new structures prepared for chart display. /// </summary> /// <param name="dailyForecastSource">DailyWeatherInfoModel object containing daily weather forecast information.</param> public DailyWeatherForecast(DailyWeatherInfoModel dailyForecastSource) { dailyTemperatureForecast = new DailyTemperatureForecast(dailyForecastSource); dailyApparentTemperatureForecast = new DailyApparentTemperatureForecast(dailyForecastSource); humidity = new List <HumidityForecastData>(); pressure = new List <PressureForecastData>(); windSpeed = new List <WindSpeedForecastData>(); int i = 0; foreach (var item in dailyForecastSource.Daily) { string requiredDate = NormalizationOperations.NormalizeDate(dailyForecastSource.Daily[i].Dt); humidity.Add(new HumidityForecastData(dailyForecastSource.Daily[i].Humidity, requiredDate)); pressure.Add(new PressureForecastData(dailyForecastSource.Daily[i].Pressure, requiredDate)); windSpeed.Add(new WindSpeedForecastData(dailyForecastSource.Daily[i].Wind_speed, requiredDate)); i++; } }
private DailyWeatherInfoModel CreateDailyWeatherInfoFromJsonResult(DailyJsonModel daily) { var filepath = daily.weather[0].icon .Replace("03d", "03dn").Replace("03n", "03dn") .Replace("04d", "04dn").Replace("04n", "04dn") .Replace("09d", "09dn").Replace("09n", "09dn") .Replace("13d", "13dn").Replace("13n", "13dn"); var webFilepath = $"/Content/assets/images/weather/{filepath}.png"; filepath = ($"{_hostingEnvironment.WebRootPath}/Content/assets/images/weather/{filepath}.png").Replace("/", "\\"); var image = Image.FromFile(filepath); var iconImage = (Image)image.Resize(22, 22); byte[] imageBytes; byte[] iconImageBytes; using (var ms = new MemoryStream()) { image.Save(ms, image.RawFormat); imageBytes = ms.ToArray(); } using (var ms = new MemoryStream()) { iconImage.Save(ms, image.RawFormat); iconImageBytes = ms.ToArray(); } var model = new DailyWeatherInfoModel() { FullImage = imageBytes, IconImage = iconImageBytes, IconUrl = webFilepath, Info = daily.weather[0].description.ToTitleCase(), Tempature = (int)Math.Round((daily.temp.min + daily.temp.max) / 2, 0) }; return(model); }
// Loads the daily apparent temperature chart /// <summary> /// Loads the daily apparent temperature chart. /// </summary> private async void LoadDayilyApparentTemperatureChart() { try { dailyWeather = await DailyWeatherInfoProcessor.LoadDailyWeather(currentWeather.Coord.Lon, currentWeather.Coord.Lat); } catch (Exception) { Console.WriteLine("Exception occurred"); } WeatherChart.Series.Clear(); WeatherChart.Header = "Apparent Temperature"; // Adding horizontal axis to chart primaryAxis.Header = "Date"; // Adding vertical axis to chart secondaryAxis.Header = "Temperature [°C]"; // Preparing data for Chart DailyWeatherForecast dailyData = new DailyWeatherForecast(dailyWeather); // Creating AdornmentInfo List <ChartAdornmentInfo> adornmentInfoList = new List <ChartAdornmentInfo>(); for (int i = 0; i < 4; i++) { ChartAdornmentInfo adornmentInfo = new ChartAdornmentInfo() { ShowMarker = true, Symbol = ChartSymbol.Diamond, SymbolHeight = 5, SymbolWidth = 5, SymbolInterior = new SolidColorBrush(Colors.Black), ShowLabel = true, LabelPosition = AdornmentsLabelPosition.Inner, Foreground = new SolidColorBrush(Colors.White), BorderBrush = new SolidColorBrush(Colors.Black), Background = new SolidColorBrush(Colors.DarkGray), BorderThickness = new Thickness(1), Margin = new Thickness(1), FontStyle = FontStyles.Italic, FontFamily = new FontFamily("Calibri"), FontSize = 11 }; adornmentInfoList.Add(adornmentInfo); } //Initialize needed Line Series LineSeries seriesMorning = new LineSeries() { ItemsSource = dailyData.dailyApparentTemperatureForecast.MorningApparentTemperature, XBindingPath = "Date", YBindingPath = "Temperature", Label = "Morning", LegendIcon = ChartLegendIcon.Circle, AdornmentsInfo = adornmentInfoList[0] }; LineSeries seriesDay = new LineSeries() { ItemsSource = dailyData.dailyApparentTemperatureForecast.DayApparentTemperature, XBindingPath = "Date", YBindingPath = "Temperature", Label = "Day", LegendIcon = ChartLegendIcon.Circle, AdornmentsInfo = adornmentInfoList[1] }; LineSeries seriesEvening = new LineSeries() { ItemsSource = dailyData.dailyApparentTemperatureForecast.EveningApparentTemperature, XBindingPath = "Date", YBindingPath = "Temperature", Label = "Evening", LegendIcon = ChartLegendIcon.Circle, AdornmentsInfo = adornmentInfoList[2] }; LineSeries seriesNight = new LineSeries() { ItemsSource = dailyData.dailyApparentTemperatureForecast.NightApparentTemperature, XBindingPath = "Date", YBindingPath = "Temperature", Label = "Night", LegendIcon = ChartLegendIcon.Circle, AdornmentsInfo = adornmentInfoList[3] }; //Adding Series to Chart WeatherChart.Series.Add(seriesMorning); WeatherChart.Series.Add(seriesDay); WeatherChart.Series.Add(seriesEvening); WeatherChart.Series.Add(seriesNight); }