Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        // 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);
        }
Esempio n. 3
0
        // 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++;
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        // 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);
        }