Merge pull request 'Nav & Binding Recipe' (#53) from feature/43-MyProfil-User into dev
continuous-integration/drone/push Build is passing Details

Reviewed-on: #53
pull/58/head
Alexandre AGOSTINHO 2 years ago
commit 99c04979b9

@ -38,7 +38,8 @@ namespace DataPersistence
}), }),
new Recipe( new Recipe(
authorMail: "admin@mctg.fr", authorMail: "admin@mctg.fr",
title: "Cookies au chocolat", id: null, title: "Cookies au chocolat",
id: null,
preparationSteps: new[] preparationSteps: new[]
{ {
new PreparationStep(1, "Moulinez la pâte."), new PreparationStep(1, "Moulinez la pâte."),

@ -67,7 +67,7 @@ namespace Model
public override string ToString() public override string ToString()
{ {
return $"{Number}{UnitQ}"; return $"{Number} {UnitQ} de : ";
} }
} }
} }

@ -40,6 +40,8 @@ namespace Model
[DataMember(Name = "authorMail")] [DataMember(Name = "authorMail")]
public string? AuthorMail { get; private set; } public string? AuthorMail { get; private set; }
public string Toto { get; set; } = "Coucou";
/// <summary> /// <summary>
/// The Title of the recipe. <br/> /// The Title of the recipe. <br/>
/// Set to "No title." when the value passed is null, empty or contain white spaces. /// Set to "No title." when the value passed is null, empty or contain white spaces.
@ -144,17 +146,17 @@ namespace Model
{ {
} }
///// <summary> /// <summary>
///// <inheritdoc cref="Recipe.Recipe(string, int?, List{Review}, PreparationStep[])"/> /// <inheritdoc cref="Recipe.Recipe(string, int?, List{Review}, PreparationStep[])"/>
///// </summary> /// </summary>
///// <param _name="title">The title of the recipe.</param> /// <param _name="title">The title of the recipe.</param>
///// <param _name="id">The id of the recipe. If not given, get a new id.</param> /// <param _name="id">The id of the recipe. If not given, get a new id.</param>
///// <param _name="picture">Image that reppresent the recipe.</param> /// <param _name="picture">Image that reppresent the recipe.</param>
///// <param _name="preparationSteps">The steps of the preparation of the meal.</param> /// <param _name="preparationSteps">The steps of the preparation of the meal.</param>
//public Recipe(string title, int? id, string picture, params PreparationStep[] preparationSteps) public Recipe()
// : this(title, id, null, picture, new List<Review>(), new List<Ingredient>(), preparationSteps) : this("", null, null, null, new List<Review>(), new List<Ingredient>(),new PreparationStep[0])
//{ {
//} }
#endregion #endregion

@ -63,9 +63,7 @@
<Label Text="Saisir les ingrédients de la recette" Grid.Row="6" Grid.Column="1" Margin="50,15"/> <Label Text="Saisir les ingrédients de la recette" Grid.Row="6" Grid.Column="1" Margin="50,15"/>
<HorizontalStackLayout Grid.Row="7" Grid.Column="1"> <HorizontalStackLayout Grid.Row="7" Grid.Column="1">
<Entry Placeholder="Nom de l'ingrédient" Margin="12,0,50,0" WidthRequest="500"/> <Entry Placeholder="Nom de l'ingrédient" Margin="12,0,50,0" WidthRequest="500"/>
<Picker Title="Unité"> <Picker ItemsSource= "{Binding UnitList}"/>
</Picker>
</HorizontalStackLayout> </HorizontalStackLayout>
<HorizontalStackLayout Grid.Row="8" Grid.Column="1" Margin="20"> <HorizontalStackLayout Grid.Row="8" Grid.Column="1" Margin="20">
<Button WidthRequest="100" Text="Précédent" TextColor="Black" Margin="20,0,20,0"/> <Button WidthRequest="100" Text="Précédent" TextColor="Black" Margin="20,0,20,0"/>

@ -9,10 +9,11 @@ namespace Views
public partial class AddRecipe : ContentPage public partial class AddRecipe : ContentPage
{ {
public MasterManager MasterMgr => (App.Current as App).MasterMgr; public MasterManager MasterMgr => (App.Current as App).MasterMgr;
public List<Unit> UnitList { get; set; } = new List<Unit> { Unit.unit, Unit.kG, Unit.mG, Unit.G, Unit.L, Unit.cL, Unit.mL };
public AddRecipe() public AddRecipe()
{ {
InitializeComponent(); InitializeComponent();
BindingContext = this;
} }
} }
} }

@ -8,6 +8,10 @@ using DataPersistence;
using Model; using Model;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using Model.Managers; using Model.Managers;
using Microsoft.Maui.Controls;
using System.Linq;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace Views namespace Views
{ {
@ -15,9 +19,18 @@ namespace Views
{ {
//Point d'entrée de l'application //Point d'entrée de l'application
public MasterManager MasterMgr { get; private set; } = new MasterManager(new Stubs()); public MasterManager MasterMgr { get; private set; } = new MasterManager(new Stubs());
//L'utilisateur courant de l'application //L'utilisateur courant de l'application
public User CurrentUser { get; set; } public User CurrentUser { get; set; }
private Recipe currentRecipe { get; set; }
public Recipe CurrentRecipe
{
get => currentRecipe;
set
{
currentRecipe = value;
OnPropertyChanged(nameof(CurrentRecipe));
}
}
//collection de recette de l'application //collection de recette de l'application
public RecipeCollection AllRecipes { get; set; } public RecipeCollection AllRecipes { get; set; }
@ -29,7 +42,7 @@ namespace Views
{ {
CurrentUser = MasterMgr.DataMgr.GetUsers().Last(); CurrentUser = MasterMgr.DataMgr.GetUsers().Last();
AllRecipes = MasterMgr.DataMgr.GetRecipes("All recipes"); AllRecipes = MasterMgr.DataMgr.GetRecipes("All recipes");
CurrentRecipe = MasterMgr.DataMgr.GetRecipes().First();
InitializeComponent(); InitializeComponent();
// Microsoft.Maui.Handlers.WindowHandler.Mapper.AppendToMapping(nameof(IWindow), (handler, view) => // Microsoft.Maui.Handlers.WindowHandler.Mapper.AppendToMapping(nameof(IWindow), (handler, view) =>
@ -51,5 +64,6 @@ namespace Views
MainPage = new Home(); MainPage = new Home();
//MainPage = new MyPosts(); //MainPage = new MyPosts();
} }
} }
} }

@ -68,9 +68,10 @@
CaseImageSource="room_service_icon.png" CaseImageSource="room_service_icon.png"
Title="{Binding Title}"/>--> Title="{Binding Title}"/>-->
<Image <ImageButton
Grid.Row="0" VerticalOptions="Fill" Grid.Row="0" VerticalOptions="Fill"
Source="{Binding Image}"/> Source="{Binding Image}"
Clicked="OnImageClicked"/>
<Label <Label
Text="{Binding Title}" FontSize="18" Text="{Binding Title}" FontSize="18"

@ -1,4 +1,5 @@
using DataPersistence; //using Android.Media;
using DataPersistence;
using Model; using Model;
using Model.Managers; using Model.Managers;
@ -8,7 +9,7 @@ namespace Views
{ {
public MasterManager MasterMgr => (App.Current as App).MasterMgr; public MasterManager MasterMgr => (App.Current as App).MasterMgr;
public User user => (App.Current as App).CurrentUser; public User user => (App.Current as App).CurrentUser;
public Recipe Recipe => (App.Current as App).CurrentRecipe;
public RecipeCollection AllRecipes => (App.Current as App).AllRecipes; public RecipeCollection AllRecipes => (App.Current as App).AllRecipes;
public Home() public Home()
{ {
@ -18,5 +19,12 @@ namespace Views
InitializeComponent(); InitializeComponent();
BindingContext = this; BindingContext = this;
} }
public void OnImageClicked(object sender, EventArgs e)
{
(App.Current as App).CurrentRecipe = (Recipe)(sender as ImageButton).BindingContext;
Navigation.PushModalAsync(new ViewRecette());
}
} }
} }

@ -10,7 +10,7 @@
WidthRequest="60" WidthRequest="60"
/> />
<Label Grid.Column="1" <Label Grid.Column="1"
Text="{Binding TitleMini, Source={Reference miniheader}}" Text="{Binding TitleMini, Source={x:Reference miniheader}}"
FontSize="Medium" FontSize="Medium"
FontAttributes="Bold" FontAttributes="Bold"
LineBreakMode="WordWrap" LineBreakMode="WordWrap"

@ -7,11 +7,11 @@ public partial class MiniHeader : ContentView
InitializeComponent(); InitializeComponent();
} }
public readonly BindableProperty TitleMiniProperty = public static readonly BindableProperty TitleMiniProperty =
BindableProperty.Create("TitleMini", typeof(string), typeof(MiniHeader), "Erreur de titre"); BindableProperty.Create(nameof(TitleMini), typeof(string), typeof(Label), "Erreur de titre");
public string TitleMini public string TitleMini
{ {
get => (string)GetValue(TitleMiniProperty); get => (string)GetValue(TitleMiniProperty);
set => SetValue(TitleMiniProperty, value); set => SetValue(TitleMiniProperty, value);
} }

@ -5,19 +5,19 @@
xmlns:local="clr-namespace:Views" xmlns:local="clr-namespace:Views"
Title="ViewRecette" Title="ViewRecette"
x:Name="nrecipe"> x:Name="nrecipe">
<VerticalStackLayout> <VerticalStackLayout BindingContext="{Binding Recipe}">
<local:MiniHeader <local:MiniHeader
TitleMini="Cookies aux Pépites de chocolat" TitleMini="{Binding Title}"
NeedReturn="True" NeedReturn="True"
HeightRequest="100"/> HeightRequest="100"/>
<Image <Image
Source="entete.jpg" Source="{Binding Image}"
HeightRequest="150" HeightRequest="150"
Aspect="AspectFill"/> Aspect="AspectFill"/>
<Grid ColumnDefinitions="200,*"> <Grid ColumnDefinitions="200,*">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="*"/> <RowDefinition Height="Auto"/>
<RowDefinition Height="*"/> <RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
@ -25,49 +25,39 @@
Text="Ingrédients :" Text="Ingrédients :"
FontSize="Subtitle" FontSize="Subtitle"
FontAttributes="Bold"/> FontAttributes="Bold"/>
<Label Margin="10,60,20,0" <ListView Margin="10,60,20,0"
Grid.RowSpan="4"> Grid.RowSpan="4"
<Label.Text> ItemsSource="{Binding Ingredients}">
<ListView.ItemTemplate>
- 6 pommes <DataTemplate>
- 6 poires <ViewCell>
- une banane <Grid ColumnDefinitions="auto,auto, auto"
- 3 fraises RowDefinitions="auto">
- 400g de farine <Label Text="{Binding QuantityI}" Grid.Column="0" Grid.Row="0"/>
- 200g de beurre <Label Text="{Binding Name}" Grid.Column=" 1" Grid.Row="0"/>
- 150g de pépite de chocolat </Grid>
</Label.Text> </ViewCell>
</Label> </DataTemplate>
<Label Margin="10,20,0,0" </ListView.ItemTemplate>
</ListView>
<Label Margin="10,0,20,20"
Grid.Column="1" Grid.Column="1"
Grid.Row="0" Grid.Row="0"
Text="Préparation :" Text="Préparation :"
FontSize="Subtitle" FontSize="Subtitle"
FontAttributes="Bold"/> FontAttributes="Bold"/>
<Label Grid.Column="1" <ListView Margin="10,30,0,0"
Grid.Row="1" Grid.Column="1"
Text="Etape 1"
FontAttributes="Italic"/> ItemsSource="{Binding PreparationSteps}">
<Label Grid.Column="1" <ListView.ItemTemplate>
Grid.Row="1" <DataTemplate>
Margin="10,20,0,0" <TextCell Text="{Binding Order, StringFormat='Etape {0}'}"
Text=" ° Laissez ramollir le beurre à température ambiante. Dans un saladier, malaxez-le avec le sucre"/> Detail="{Binding Description}"/>
<Label Grid.Column="1" </DataTemplate>
Grid.Row="2" </ListView.ItemTemplate>
FontAttributes="Italic" </ListView>
Text="Etape 2"/>
<Label Grid.Column="1"
Grid.Row="2"
Margin="10,20,0,0"
Text=" ° Ajoutez l'oeuf et éventuellement le sucre vanillé. "/>
<Label Grid.Column="1"
Grid.Row="3"
FontAttributes="Italic"
Text="Etape 3"/>
<Label Grid.Column="1"
Grid.Row="3"
Margin="10,20,0,0"
Text=" ° Ajoutez l'oeuf et éventuellement le sucre vanillé. "/>
@ -81,30 +71,37 @@
Padding="20,10,80,20" Padding="20,10,80,20"
Margin="50,100,50,0" Margin="50,100,50,0"
MinimumHeightRequest="200"> MinimumHeightRequest="200">
<Grid ColumnDefinitions="600,*"> <ListView ItemsSource="{Binding Reviews}">
<Grid.RowDefinitions> <ListView.ItemTemplate>
<RowDefinition Height="*"/> <DataTemplate>
<RowDefinition Height="*"/> <Grid ColumnDefinitions="600,*" >
<RowDefinition Height="*"/> <Grid.RowDefinitions>
</Grid.RowDefinitions> <RowDefinition Height="*"/>
<Label Grid.ColumnSpan="2" <RowDefinition Height="*"/>
Grid.Row="0" <RowDefinition Height="*"/>
Text=" Meilleure revue : " </Grid.RowDefinitions>
FontAttributes="Bold"/> <Label Grid.ColumnSpan="2"
<Label Background="#FFCB9A" Grid.Row="0"
Grid.Column="0" Text=" Meilleure revue : "
Grid.Row="1" FontAttributes="Bold"/>
Grid.RowSpan="2" <Label
Padding="10,10,10,10" Background="#FFCB9A"
Text="Recette facile, non prise de tête et agréable à réaliser avec ses grands parents. Le resultat est délicieux, ma famille a adorée." Grid.Column="0"
Margin="0,0,15,0"/> Grid.Row="1"
Grid.RowSpan="2"
Padding="10,10,10,10"
Text="{Binding Content}"
Margin="0,0,15,0"/>
<Button Grid.Column="1"
Grid.Row="2"
Background="#FFCB9A"
Text="Voir plus"
TextColor="Black"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Grid.Column="1"
Grid.Row="2"
Background="#FFCB9A"
Text="Voir plus"
TextColor="Black"/>
</Grid>
</Border> </Border>
</VerticalStackLayout> </VerticalStackLayout>

@ -1,3 +1,6 @@
using Model.Managers;
using Model;
namespace Views; namespace Views;
/// <summary> /// <summary>
/// Classe de la page contenant le detail de la recette /// Classe de la page contenant le detail de la recette
@ -5,9 +8,14 @@ namespace Views;
/// </summary> /// </summary>
public partial class ViewRecette : ContentPage public partial class ViewRecette : ContentPage
{ {
public MasterManager MasterMgr => (App.Current as App).MasterMgr;
public User user => (App.Current as App).CurrentUser;
public Recipe Recipe => (App.Current as App).CurrentRecipe;
public RecipeCollection AllRecipes => (App.Current as App).AllRecipes;
public ViewRecette() public ViewRecette()
{ {
InitializeComponent(); InitializeComponent();
} BindingContext = this;
}
} }
Loading…
Cancel
Save