Add(Back-End): mise en place de vm intermediaire
continuous-integration/drone/push Build is failing Details

Back-End
lodufour1 2 years ago
parent 9fc0d3a3e5
commit 2886bb8f2c

@ -8,7 +8,7 @@
<CollectionView ItemsSource="{Binding AuteurGroups}" IsGrouped="True" SelectionMode="Single">
<CollectionView.GroupHeaderTemplate>
<DataTemplate>
<DataTemplate x:DataType="model:Author">
<Label Text="{Binding Name}"
FontFamily="SF-Compact-Display-Semibold"
BackgroundColor="LightGrey"
@ -17,12 +17,12 @@
</DataTemplate>
</CollectionView.GroupHeaderTemplate>
<CollectionView.ItemTemplate>
<DataTemplate>
<DataTemplate x:DataType="model:Book">
<StackLayout Style="{StaticResource StyleCollectionStack}">
<Grid>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Source={x:Reference ThisPage}, Path=Nav.BookDetailCommand}"
CommandParameter="{Binding .}"/>
CommandParameter="{Binding Id}"/>
</Grid.GestureRecognizers>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
@ -41,9 +41,7 @@
FontFamily="SF-Compact-Display-Bold"
FontSize="18"
TextColor="Black"/>
<Label Text="{Binding Authors}"
FontFamily="SF-Compact-Display-Semibold"
TextColor="Black"/>
<!-- <Label Text="{Binding Authors, Converter=}" FontFamily="SF-Compact-Display-Semibold" TextColor="Black"/> -->
<Label
TextColor="SlateGray"
Text="{Binding Status}"/>

@ -12,7 +12,7 @@ namespace BookApp.Composants
InitializeComponent();
}
public GroupCollection(BookViewModel data)
public GroupCollection(BooksViewModel data)
: this()
{
BindingContext = data;

@ -44,7 +44,7 @@
<Rectangle HeightRequest="1" BackgroundColor="black" VerticalOptions="End" />
<CollectionView ItemsSource="{Binding MenuItemsLivre}" Margin="25,0,0,0" BackgroundColor="#F9F9F9">
<CollectionView.ItemTemplate>
<DataTemplate>
<DataTemplate x:DataType="vm:ViewModelMenuItem">
<Grid RowDefinitions="Auto" Style="{StaticResource StyleCollectionGrid}" Padding="2">
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Source={x:Reference ThisPage}, Path=Nav.MenuItemsCommand}"

@ -29,7 +29,7 @@ namespace BookApp
builder.Logging.AddDebug();
#endif
builder.Services.AddSingleton<ILibraryManager, LibraryStub>();
builder.Services.AddSingleton<BookViewModel>();
builder.Services.AddSingleton<BooksViewModel>();
builder.Services.AddSingleton<FilterViewModel>();
builder.Services.AddSingleton<SearchBarViewModel>();
builder.Services.AddSingleton<DetailBookViewModel>();

@ -6,6 +6,7 @@
xmlns:vm="clr-namespace:BookApp.ViewModel"
x:Name="ThisPage"
x:Class="BookApp.Pages.DetailBook">
<Shell.BackButtonBehavior>
<BackButtonBehavior IsVisible="False" IsEnabled="False"/>
</Shell.BackButtonBehavior>

@ -3,15 +3,16 @@ using System.Diagnostics;
using VMWrapper;
namespace BookApp.Pages
{
{
[QueryProperty(nameof(BookId), "BookId")]
public partial class DetailBook : ContentPage
{
public ViewModelNavigation Nav { get; } = new ViewModelNavigation();
public ViewModelDetailProvider VMProvider { get; }
public DetailBook(DetailBookViewModel viewModel)
public DetailBook()
{
InitializeComponent();
BindingContext = viewModel;
BindingContext = this;
}
}
}

@ -22,7 +22,7 @@ namespace BookApp.Pages
public ViewModelNavigation Nav { get; } = new ViewModelNavigation();
public EmpruntsPrets(BookViewModel data)
public EmpruntsPrets(BooksViewModel data)
{
InitializeComponent();
BindingContext = data;

@ -9,7 +9,7 @@ namespace BookApp.Pages
{
public ViewModelNavigation Nav { get; } = new ViewModelNavigation();
public Tous(BookViewModel data)
public Tous(BooksViewModel data)
{
InitializeComponent();
BindingContext = data;

@ -0,0 +1,19 @@
using Model;
using System.Windows.Input;
using ToolKit;
using VMWrapper;
namespace BookApp.ViewModel
{
class ViewModelDetailProvider
{
public ICommand _idDetailCommand;
public ICommand IdDetailCommand =>
_idDetailCommand ??= new CommandPersonnal<Book>(
async (bookId) => await OnToItemDetail(bookId)
);
public ViewModelDetailProvider(DetailBookViewModel bookProvider, ViewModelNavigation navProvider)
{
}
}
}

@ -19,17 +19,10 @@ namespace BookApp.ViewModel
// Command Collection livre
public ICommand _bookDetailCommand;
public ICommand BookDetailCommand =>
_bookDetailCommand ??= new CommandPersonnal<Book>(
async (book) => await OnBookSelected(book)
_bookDetailCommand ??= new CommandPersonnal<string>(
async (book) => await OnToItemDetail(book)
);
private Book _selectedBook;
public Book SelectedBook
{
get { return _selectedBook; }
set { SetProperty(ref _selectedBook, value); }
}
// Command Collection menu
private ICommand _menuItemsCommand;
public ICommand MenuItemsCommand =>
@ -61,16 +54,17 @@ namespace BookApp.ViewModel
}
}
private async Task OnBookSelected(Book book)
private async Task OnToItemDetail(string bookId)
{
if (book == null)
if (bookId == null)
{
Debug.WriteLine("Book is null, cannot navigate to details page.");
return;
}
try
{
SelectedBook = book;
await Shell.Current.GoToAsync("DetailBookPage");
await Shell.Current.GoToAsync($"DetailBookPage?BookId={bookId}");
}
catch (Exception ex)
{
@ -78,6 +72,7 @@ namespace BookApp.ViewModel
}
}
async Task BackButton(object sender, EventArgs args)
{
if (Shell.Current.Navigation.NavigationStack.Count > 1)

@ -3,14 +3,14 @@ using System.Collections.ObjectModel;
namespace VMWrapper
{
public class BookViewModel
public class BooksViewModel
{
private readonly ILibraryManager data;
public ObservableCollection<AuteurGroup> AuteurGroups { get; private set; } =
new ObservableCollection<AuteurGroup>();
public BookViewModel(ILibraryManager data)
public BooksViewModel(ILibraryManager data)
{
this.data = data;
LoadBooksAsync();

@ -4,15 +4,24 @@ using ToolKit;
namespace VMWrapper
{
[QueryProperty(nameof(BookId), "BookId")]
public class DetailBookViewModel : BaseViewModel
{
private readonly ILibraryManager data;
private string _bookId;
public string BookId
{
get { return _bookId; }
set { SetProperty(ref _bookId, value); }
}
public Book BookDetail { get; private set; } = new Book();
public DetailBookViewModel(ILibraryManager data)
{
this.data = data;
LoadBookDetail(BookId);
}
private async void LoadBookDetail(string idBook)

Loading…
Cancel
Save