public static async Task <TransportData> GetWeatherData(string location, bool isNotConnect = false) { var url = $"http://api.openweathermap.org/data/2.5/weather?q={location}&lang=ru&appid=d5d3293da42803e2680954b8ee1e7352&units=metric"; var result = await HttpGet(url); if (result.Successful) { if (isNotConnect) { var weatherData_ = JsonConvert.DeserializeObject <WeatherData>(result.Response); weatherData_.weather[0].description = weatherData_.weather[0].description.ToUpper(); weatherData_.weather[0].icon = $"w{weatherData_.weather[0].icon}"; weatherData_.name = weatherData_.name.ToUpper(); List <List> forecastData_ = await GetForecastData(location, isNotConnect); ImageSource imageSource_ = "weather.jpeg"; var x_ = new TransportData(); x_.weatherData = weatherData_; x_.forecastList = forecastData_; x_.imageSource = imageSource_; return(x_); } var weatherData = JsonConvert.DeserializeObject <WeatherData>(result.Response); weatherData.weather[0].description = weatherData.weather[0].description.ToUpper(); weatherData.weather[0].icon = $"http://openweathermap.org/img/wn/{weatherData.weather[0].icon}@2x.png"; weatherData.name = weatherData.name.ToUpper(); List <List> forecastData = await GetForecastData(location); ImageSource imageSource = await GetBackgroundImage(weatherData.weather[0].main); var x = new TransportData(); x.weatherData = weatherData; x.forecastList = forecastData; x.imageSource = imageSource; return(x); } else { return(new TransportData()); } }
public async void TransportPush(string location) { TransportData x = await MainPage.GetWeatherData(location, true); if (ThreadAction.savedCities.Count == 0) { foreach (var w in ThreadAction.likedCities) { if (w.name != x.weatherData.name) { TransportData z = await MainPage.GetWeatherData($"{w.name}, {w.country}", true); ThreadAction.savedCities.Add(z); } } } ThreadAction.savedCities.Add(x); var y = await MainPage.GetLocationData(); if (y != null) { TransportData y_ = await MainPage.GetWeatherData(y, true); if (ThreadAction.savedCities.Contains(y_) != true) { ThreadAction.savedCities.Add(y_); } } string fileSavedName = "citysavedlist.json"; var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); var filename = Path.Combine(path, fileSavedName); string data = JsonConvert.SerializeObject(ThreadAction.savedCities); File.WriteAllText(filename, data); }
public Grid builder(TransportData data) { var content = new Grid { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand, RowSpacing = 0 }; content.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); content.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) }); Grid grid_ = new Grid { RowSpacing = 0 }; grid_.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) }); grid_.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); var boxView = new BoxView { BackgroundColor = Color.FromHex("#7585BA"), HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand }; Grid.SetRowSpan(boxView, 2); // var imageBackgroind = new Image { Aspect = Aspect.Fill, Source = data.imageSource, Opacity = 0.5, HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand }; Grid.SetRowSpan(imageBackgroind, 2); grid_.Children.Add(boxView); grid_.Children.Add(imageBackgroind); var gridChild = new Grid(); Grid.SetRow(gridChild, 1); var stack1 = new StackLayout { Spacing = 20, Margin = 20 }; var stack2 = new StackLayout { Orientation = StackOrientation.Horizontal, Spacing = 50, HorizontalOptions = LayoutOptions.Center }; var stack2_1 = new StackLayout { VerticalOptions = LayoutOptions.Center }; var stack2_2 = new StackLayout { VerticalOptions = LayoutOptions.Center }; var imageStack2_1 = new Image { Source = data.weatherData.weather[0].icon.Length > 5 ? ImageSource.FromUri(new Uri(data.weatherData.weather[0].icon)) : $"{data.weatherData.weather[0].icon}", WidthRequest = 67, HeightRequest = 50 }; var labelStack2_1 = new Label { Text = data.weatherData.weather[0].main.ToUpper(), TextColor = Color.White, FontSize = 13, HorizontalOptions = LayoutOptions.Center }; stack2_1.Children.Add(imageStack2_1); stack2_1.Children.Add(labelStack2_1); var labelStack2_2_1 = new Label { Text = data.weatherData.name.ToUpper(), TextColor = Color.White, FontSize = 20, FontAttributes = FontAttributes.Bold, HorizontalOptions = LayoutOptions.Center }; var dt = new DateTime(1970, 1, 1).Add(TimeSpan.FromTicks((data.weatherData.dt + data.weatherData.timezone) * TimeSpan.TicksPerSecond)); var labelStack2_2_2 = new Label { Text = dt.ToString("dddd, MMM dd").ToUpper(), TextColor = Color.White, FontSize = 13, HorizontalOptions = LayoutOptions.Center }; stack2_2.Children.Add(labelStack2_2_1); stack2_2.Children.Add(labelStack2_2_2); // stack2.Children.Add(stack2_1); stack2.Children.Add(stack2_2); // var stack3 = new StackLayout(); var stack3_ = new StackLayout { Orientation = StackOrientation.Horizontal, Spacing = 0, HorizontalOptions = LayoutOptions.Center }; var labelStack3_1 = new Label { Text = data.weatherData.main.temp.ToString("0"), TextColor = Color.White, FontSize = 150, HorizontalOptions = LayoutOptions.Center }; var labelStack3_2 = new Label { Text = "°", TextColor = Color.White, FontSize = 150, HorizontalOptions = LayoutOptions.Center }; stack3_.Children.Add(labelStack3_1); stack3_.Children.Add(labelStack3_2); stack3.Children.Add(stack3_); // var gridChild4 = new Grid { WidthRequest = 320, ColumnSpacing = 10, HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand }; gridChild4.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); var stackGrid4 = new StackLayout { Orientation = StackOrientation.Horizontal, Spacing = 10, HorizontalOptions = LayoutOptions.CenterAndExpand }; var stackGrid4_1 = new StackLayout { Spacing = 7, HorizontalOptions = LayoutOptions.CenterAndExpand }; var labelStack4_1 = new Label { Text = data.weatherData.weather[0].description, TextColor = Color.White, FontSize = 14, FontAttributes = FontAttributes.Bold, HorizontalOptions = LayoutOptions.Center }; stackGrid4_1.Children.Add(labelStack4_1); stackGrid4.Children.Add(stackGrid4_1); gridChild4.Children.Add(stackGrid4); // stack1.Children.Add(stack2); stack1.Children.Add(stack3); stack1.Children.Add(gridChild4); gridChild.Children.Add(stack1); grid_.Children.Add(gridChild); content.Children.Add(grid_); // var grid__ = new Grid { HeightRequest = 160, ColumnSpacing = 0 }; Grid.SetRow(grid__, 1); grid__.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid__.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid__.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid__.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); var grid__1 = new Grid { BackgroundColor = Color.FromHex("#393E41"), Opacity = 0.4 }; Grid.SetColumn(grid__1, 0); var grid__1_stack = new StackLayout { HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand }; var x1 = new DateTime(1970, 1, 1).Add(TimeSpan.FromTicks((data.forecastList[0].dt + data.weatherData.timezone) * TimeSpan.TicksPerSecond)); var grid__1_stack_label_1 = new Label { Text = x1.ToString("dddd"), TextColor = Color.White, FontSize = 13, HorizontalOptions = LayoutOptions.Center }; var grid__1_stack_label_2 = new Label { Margin = new Thickness(0, -5, 0, 0), Text = x1.ToString("dd MMM"), TextColor = Color.White, FontSize = 10, HorizontalOptions = LayoutOptions.Center }; var grid__1_stack_image = new Image { Source = data.forecastList[0].weather[0].icon.Length > 5 ? ImageSource.FromUri(new Uri(data.forecastList[1].weather[0].icon)) : $"w{data.forecastList[0].weather[0].icon}", Margin = new Thickness(0, 20), WidthRequest = 30, HeightRequest = 22 }; var grid__1_stack_stack = new StackLayout { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.Center, Spacing = 0 }; var grid__1_stack_stack_label_1 = new Label { Text = data.forecastList[0].main.temp.ToString("0"), TextColor = Color.White, FontSize = 23, HorizontalOptions = LayoutOptions.Center }; var grid__1_stack_stack_label_2 = new Label { Text = "°", TextColor = Color.White, FontSize = 23, HorizontalOptions = LayoutOptions.Center }; grid__1_stack_stack.Children.Add(grid__1_stack_stack_label_1); grid__1_stack_stack.Children.Add(grid__1_stack_stack_label_2); grid__1_stack.Children.Add(grid__1_stack_label_1); grid__1_stack.Children.Add(grid__1_stack_label_2); grid__1_stack.Children.Add(grid__1_stack_image); grid__1_stack.Children.Add(grid__1_stack_stack); grid__1.Children.Add(grid__1_stack); // var grid__2 = new Grid { BackgroundColor = Color.FromHex("#393E41"), Opacity = 0.55 }; Grid.SetColumn(grid__2, 1); var grid__2_stack = new StackLayout { HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand }; var x2 = new DateTime(1970, 1, 1).Add(TimeSpan.FromTicks((data.forecastList[1].dt + data.weatherData.timezone) * TimeSpan.TicksPerSecond)); var grid__2_stack_label_1 = new Label { Text = x2.ToString("dddd"), TextColor = Color.White, FontSize = 13, HorizontalOptions = LayoutOptions.Center }; var grid__2_stack_label_2 = new Label { Margin = new Thickness(0, -5, 0, 0), Text = x2.ToString("dd MMM"), TextColor = Color.White, FontSize = 10, HorizontalOptions = LayoutOptions.Center }; var grid__2_stack_image = new Image { Source = data.forecastList[1].weather[0].icon.Length > 5 ? ImageSource.FromUri(new Uri(data.forecastList[1].weather[0].icon)) : $"w{data.forecastList[1].weather[0].icon}", Margin = new Thickness(0, 20), WidthRequest = 30, HeightRequest = 22 }; var grid__2_stack_stack = new StackLayout { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.Center, Spacing = 0 }; var grid__2_stack_stack_label_1 = new Label { Text = data.forecastList[1].main.temp.ToString("0"), TextColor = Color.White, FontSize = 23, HorizontalOptions = LayoutOptions.Center }; var grid__2_stack_stack_label_2 = new Label { Text = "°", TextColor = Color.White, FontSize = 23, HorizontalOptions = LayoutOptions.Center }; grid__2_stack_stack.Children.Add(grid__2_stack_stack_label_1); grid__2_stack_stack.Children.Add(grid__2_stack_stack_label_2); grid__2_stack.Children.Add(grid__2_stack_label_1); grid__2_stack.Children.Add(grid__2_stack_label_2); grid__2_stack.Children.Add(grid__2_stack_image); grid__2_stack.Children.Add(grid__2_stack_stack); grid__2.Children.Add(grid__2_stack); // var grid__3 = new Grid { BackgroundColor = Color.FromHex("#393E41"), Opacity = 0.7 }; Grid.SetColumn(grid__3, 2); var grid__3_stack = new StackLayout { HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand }; var x3 = new DateTime(1970, 1, 1).Add(TimeSpan.FromTicks((data.forecastList[2].dt + data.weatherData.timezone) * TimeSpan.TicksPerSecond)); var grid__3_stack_label_1 = new Label { Text = x3.ToString("dddd"), TextColor = Color.White, FontSize = 13, HorizontalOptions = LayoutOptions.Center }; var grid__3_stack_label_2 = new Label { Margin = new Thickness(0, -5, 0, 0), Text = x3.ToString("dd MMM"), TextColor = Color.White, FontSize = 10, HorizontalOptions = LayoutOptions.Center }; var grid__3_stack_image = new Image { Source = data.forecastList[2].weather[0].icon.Length > 5 ? ImageSource.FromUri(new Uri(data.forecastList[2].weather[0].icon)) : $"w{data.forecastList[2].weather[0].icon}", Margin = new Thickness(0, 20), WidthRequest = 30, HeightRequest = 22 }; var grid__3_stack_stack = new StackLayout { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.Center, Spacing = 0 }; var grid__3_stack_stack_label_1 = new Label { Text = data.forecastList[2].main.temp.ToString("0"), TextColor = Color.White, FontSize = 23, HorizontalOptions = LayoutOptions.Center }; var grid__3_stack_stack_label_2 = new Label { Text = "°", TextColor = Color.White, FontSize = 23, HorizontalOptions = LayoutOptions.Center }; grid__3_stack_stack.Children.Add(grid__3_stack_stack_label_1); grid__3_stack_stack.Children.Add(grid__3_stack_stack_label_2); grid__3_stack.Children.Add(grid__3_stack_label_1); grid__3_stack.Children.Add(grid__3_stack_label_2); grid__3_stack.Children.Add(grid__3_stack_image); grid__3_stack.Children.Add(grid__3_stack_stack); grid__3.Children.Add(grid__3_stack); // var grid__4 = new Grid { BackgroundColor = Color.FromHex("#393E41"), Opacity = 0.85 }; Grid.SetColumn(grid__4, 3); var grid__4_stack = new StackLayout { HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand }; var x4 = new DateTime(1970, 1, 1).Add(TimeSpan.FromTicks((data.forecastList[3].dt + data.weatherData.timezone) * TimeSpan.TicksPerSecond)); var grid__4_stack_label_1 = new Label { Text = x4.ToString("dddd"), TextColor = Color.White, FontSize = 13, HorizontalOptions = LayoutOptions.Center }; var grid__4_stack_label_2 = new Label { Margin = new Thickness(0, -5, 0, 0), Text = x4.ToString("dd MMM"), TextColor = Color.White, FontSize = 10, HorizontalOptions = LayoutOptions.Center }; var grid__4_stack_image = new Image { Source = data.forecastList[3].weather[0].icon.Length > 5 ? ImageSource.FromUri(new Uri(data.forecastList[3].weather[0].icon)) : $"w{data.forecastList[3].weather[0].icon}", Margin = new Thickness(0, 20), WidthRequest = 30, HeightRequest = 22 }; var grid__4_stack_stack = new StackLayout { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.Center, Spacing = 0 }; var grid__4_stack_stack_label_1 = new Label { Text = data.forecastList[3].main.temp.ToString("0"), TextColor = Color.White, FontSize = 23, HorizontalOptions = LayoutOptions.Center }; var grid__4_stack_stack_label_2 = new Label { Text = "°", TextColor = Color.White, FontSize = 23, HorizontalOptions = LayoutOptions.Center }; grid__4_stack_stack.Children.Add(grid__4_stack_stack_label_1); grid__4_stack_stack.Children.Add(grid__4_stack_stack_label_2); grid__4_stack.Children.Add(grid__4_stack_label_1); grid__4_stack.Children.Add(grid__4_stack_label_2); grid__4_stack.Children.Add(grid__4_stack_image); grid__4_stack.Children.Add(grid__4_stack_stack); grid__4.Children.Add(grid__4_stack); // grid__.Children.Add(grid__1); grid__.Children.Add(grid__2); grid__.Children.Add(grid__3); grid__.Children.Add(grid__4); content.Children.Add(grid__); // return(content); }