コード例 #1
0
        private Grid GetGridForLocationForecastInstant(LocationForecastInstant instant)
        {
            var instantDetails = instant.data.instant.details;
            var newGrid        = new Grid();

            newGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = new GridLength(80)
            });
            newGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = new GridLength(50)
            });
            newGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = new GridLength(80)
            });

            var timeLabel = new Label();

            timeLabel.Content = instant.time.ToLocalTime().ToString("MM/dd htt");
            Grid.SetColumn(timeLabel, 0);
            newGrid.Children.Add(timeLabel);

            var temperatureLabel     = new Label();
            var farenheitTemperature = TemperatureHelper.ConvertCentrigradeToFarenheit(instantDetails.air_temperature);

            temperatureLabel.Content = Math.Round(farenheitTemperature, 1) + "°F";
            Grid.SetColumn(temperatureLabel, 1);
            newGrid.Children.Add(temperatureLabel);

            var descriptionLabel    = new Label();
            var forecastDescription = instant.data.next_1_hours["summary"]["symbol_code"].ToString();
            var friendlyDescription = ForecastHelper.GetFriendlyStringFromForecast(forecastDescription);

            descriptionLabel.Content = friendlyDescription;
            Grid.SetColumn(descriptionLabel, 2);
            newGrid.Children.Add(descriptionLabel);

            var windLabel       = new Label();
            var windCardinality = WindHelper.GetWindDirectionFromDegrees(instantDetails.wind_from_direction);
            var windSpeedInMPH  = Math.Round(WindHelper.ConvertMetersPerSecondToMPH(instantDetails.wind_speed), 1);

            windLabel.Content = $"{windCardinality} {windSpeedInMPH} MPH";
            Grid.SetColumn(windLabel, 3);
            newGrid.Children.Add(windLabel);

            return(newGrid);
        }
コード例 #2
0
        public async Task Load48HoursWeatherInfo()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                await GeolocationHelper.GetGeolocationInfo(geoModel);

                var result = await HttpConnection.Get48HoursWeatherInfoAsync(geoModel.Lat, geoModel.Lon, "apiKey");

                if (result.Hourly != null)
                {
                    foreach (var item in result.Hourly)
                    {
                        Hourly48ForecastList.Add(new Forecast48HoursModel
                        {
                            Dt                      = DateAndTimeHelper.ConvertToDateAndTime(item.Dt, DateAndTimeHelper.TypeForDateAndTimeFormat.TIME),
                            DateAndTime             = DateAndTimeHelper.ConvertToDateAndTime(item.Dt, DateAndTimeHelper.TypeForDateAndTimeFormat.DATE_AND_TIME_FOR_48FORECAST),
                            Temp                    = Math.Round(item.Temp.Value, 1).ToString(),
                            Icon                    = HttpConnection.GetIconForWeather(item.Weather.First().Icon),
                            WindDeg                 = WindHelper.DegreesToGeogrpahicalDirections(item.WindDeg.Value),
                            GroupName               = DateAndTimeHelper.ConvertToDateAndTime(item.Dt, DateAndTimeHelper.TypeForDateAndTimeFormat.COMMON_DATETIME),
                            ColorOfTemperatureLabel = item.Weather.First().Icon.Contains("n")?"#000000": "#008000",
                            Humidity                = item.Humidity,
                            WindSpeed               = WindHelper.MpsToKmph(item.WindSpeed.Value),
                            Rain                    = string.IsNullOrEmpty(item.Rain) ? "0" : item.Rain,
                            Clouds                  = item.Clouds,
                            Pressure                = item.Pressure,
                            Description             = item.Weather.First().Description,
                            FeelsTemp               = Math.Round(item.FeelsLike.Value, 1).ToString()
                        });
                    }

                    List <string> groupNamesList = new List <string>();

                    foreach (var item in Hourly48ForecastList)
                    {
                        groupNamesList.Add(item.GroupName);
                    }

                    var distinctGroupNamesList = groupNamesList.Distinct().ToList();

                    foreach (var item in distinctGroupNamesList)
                    {
                        GroupedHourly48ForecastList.Add(new GroupingForListClass <string, Forecast48HoursModel>(item, Hourly48ForecastList.Where(x => x.GroupName == item)));
                    }
                }
                else
                {
                    await App.Current.MainPage.DisplayAlert("Błąd", "Coś poszło nie tak.", "OK");
                }
            }

            catch (Exception ex)
            {
                await App.Current.MainPage.DisplayAlert("Błąd", "Coś poszło nie tak.", "OK");
            }
            finally
            {
                IsBusy = false;
            }
        }
コード例 #3
0
        public async Task LoadActualAndDailyWeatherInfoForSevenDays()
        {
            if (IsBusy)
            {
                return;
            }

            DailyForecastList.Clear();
            IsBusy = true;
            try
            {
                var result = await HttpConnection.GetActualWeatherInfoForLocationAsync(geoModel.Location, "apiKey");

                if (result != null)
                {
                    Location             = result.Name;
                    DescriptionOfWeather = result.Weather.First().Description;
                    DateAndTime          = DateAndTimeHelper.ConvertToDateAndTime(result.Dt, DateAndTimeHelper.TypeForDateAndTimeFormat.COMMON_DATETIME);
                    SunriseTime          = DateAndTimeHelper.ConvertToDateAndTime(result.Sys.Sunrise, DateAndTimeHelper.TypeForDateAndTimeFormat.TIME);
                    SunsetTime           = DateAndTimeHelper.ConvertToDateAndTime(result.Sys.Sunset, DateAndTimeHelper.TypeForDateAndTimeFormat.TIME);
                    Temperature          = Math.Round(result.Main.Temp.Value, 1).ToString();
                    FeelsLikeTemperature = Math.Round(result.Main.FeelsLike.Value, 1).ToString();
                    Humidity             = result.Main.Humidity;
                    WindSpeed            = WindHelper.MpsToKmph(result.Wind.Speed.Value);
                    Pressure             = result.Main.Pressure;
                    Clouds        = result.Clouds.All;
                    WindDirection = WindHelper.DegreesToGeogrpahicalDirections(result.Wind.Deg.Value);
                    Icon          = HttpConnection.GetIconForWeather(result.Weather.First().Icon);
                }
                else
                {
                    await App.Current.MainPage.DisplayAlert("Błąd", "Coś poszło nie tak.", "OK");
                }

                var resultForDailyWeatherInfo = await HttpConnection.GetDailyWeatherInfoForSevenDaysAsync(geoModel.Lat, geoModel.Lon, "apiKey");

                if (resultForDailyWeatherInfo.Daily != null)
                {
                    foreach (var item in resultForDailyWeatherInfo.Daily)
                    {
                        DailyForecastList.Add(new DailyForecastForSevenDaysModel
                        {
                            Dt           = DateAndTimeHelper.ConvertToDateAndTime(item.Dt, DateAndTimeHelper.TypeForDateAndTimeFormat.COMMON_DATETIME),
                            DayTemp      = Math.Round(item.Temp.Day.Value, 1).ToString(),
                            NightTemp    = Math.Round(item.Temp.Night.Value, 1).ToString(),
                            MinTemp      = Math.Round(item.Temp.Min.Value, 1).ToString(),
                            MaxTemp      = Math.Round(item.Temp.Max.Value, 1).ToString(),
                            FeelsTempDay = Math.Round(item.FeelsLike.Day.Value, 1).ToString(),
                            Humidity     = item.Humidity,
                            Sunrise      = DateAndTimeHelper.ConvertToDateAndTime(item.Sunrise, DateAndTimeHelper.TypeForDateAndTimeFormat.TIME),
                            Sunset       = DateAndTimeHelper.ConvertToDateAndTime(item.Sunset, DateAndTimeHelper.TypeForDateAndTimeFormat.TIME),
                            WindDeg      = WindHelper.DegreesToGeogrpahicalDirections(item.WindDeg.Value),
                            WindSpeed    = WindHelper.MpsToKmph(item.WindSpeed.Value),
                            Rain         = string.IsNullOrEmpty(item.Rain) ? "0" : item.Rain,
                            Icon         = HttpConnection.GetIconForWeather(item.Weather.First().Icon),
                            Clouds       = item.Clouds,
                            Pressure     = item.Pressure,
                            Description  = item.Weather.First().Description
                        });
                    }
                }
                else
                {
                    await App.Current.MainPage.DisplayAlert("Błąd", "Coś poszło nie tak.", "OK");
                }
            }

            catch (Exception ex)
            {
                await App.Current.MainPage.DisplayAlert("Błąd", "Coś poszło nie tak. Być może nie włączono Internetu.", "OK");

                System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow();
            }
            finally
            {
                IsBusy = false;
            }
        }