diff --git a/AideDeJeu/AideDeJeu/AideDeJeu.csproj b/AideDeJeu/AideDeJeu/AideDeJeu.csproj
index 3452c7fb..768084dd 100644
--- a/AideDeJeu/AideDeJeu/AideDeJeu.csproj
+++ b/AideDeJeu/AideDeJeu/AideDeJeu.csproj
@@ -20,6 +20,9 @@
Code
+
+ SpellDetailPage.xaml
+
Code
diff --git a/AideDeJeu/AideDeJeu/App.xaml b/AideDeJeu/AideDeJeu/App.xaml
index df27c6c9..d28f31cd 100644
--- a/AideDeJeu/AideDeJeu/App.xaml
+++ b/AideDeJeu/AideDeJeu/App.xaml
@@ -23,6 +23,8 @@
#58180D
#C9AD6A
#9C2B1B
+ #000000
+
#E0E5C1
@@ -68,11 +70,17 @@
+
+
-
+
@@ -81,6 +89,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -88,23 +108,43 @@
-
-
+
+
+
+
+
+
+
diff --git a/AideDeJeu/AideDeJeu/Services/MockDataStore.cs b/AideDeJeu/AideDeJeu/Services/MockDataStore.cs
index de6e65c8..b9e35f12 100644
--- a/AideDeJeu/AideDeJeu/Services/MockDataStore.cs
+++ b/AideDeJeu/AideDeJeu/Services/MockDataStore.cs
@@ -65,7 +65,7 @@ namespace AideDeJeu.Services
{
var scrapper = new Scrappers();
var spells = await scrapper.GetSpells(await scrapper.GetSpellIds("c"));
- items = spells.Select(spell => new Item() { Text = spell.Title, Description = spell.DescriptionText }).ToList();
+ items = spells.Select(spell => new Item() { Text = spell.Title, Description = spell.Description }).ToList();
return await Task.FromResult(items);
}
}
diff --git a/AideDeJeu/AideDeJeu/Services/SpellDataStore.cs b/AideDeJeu/AideDeJeu/Services/SpellDataStore.cs
new file mode 100644
index 00000000..287824ed
--- /dev/null
+++ b/AideDeJeu/AideDeJeu/Services/SpellDataStore.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+using AideDeJeu.Models;
+using AideDeJeuLib;
+
+[assembly: Xamarin.Forms.Dependency(typeof(AideDeJeu.Services.SpellDataStore))]
+namespace AideDeJeu.Services
+{
+ public class SpellDataStore : IDataStore
+ {
+ List items;
+
+ public SpellDataStore()
+ {
+ items = new List();
+ var mockItems = new List
+ {
+ };
+
+ foreach (var item in mockItems)
+ {
+ items.Add(item);
+ }
+ }
+
+ public async Task AddItemAsync(Spell item)
+ {
+ items.Add(item);
+
+ return await Task.FromResult(true);
+ }
+
+ public async Task UpdateItemAsync(Spell item)
+ {
+ var _item = items.Where((Spell arg) => arg.Id == item.Id).FirstOrDefault();
+ items.Remove(_item);
+ items.Add(item);
+
+ return await Task.FromResult(true);
+ }
+
+ public async Task DeleteItemAsync(Spell item)
+ {
+ var _item = items.Where((Spell arg) => arg.Id == item.Id).FirstOrDefault();
+ items.Remove(_item);
+
+ return await Task.FromResult(true);
+ }
+
+ public async Task GetItemAsync(string id)
+ {
+ return await Task.FromResult(items.FirstOrDefault(s => s.Id == id));
+ }
+
+ public async Task> GetItemsAsync(bool forceRefresh = false)
+ {
+ var scrapper = new Scrappers();
+ items = (await scrapper.GetSpells(await scrapper.GetSpellIds(""))).ToList();
+
+ //items = spells.Select(spell => new Item() { Text = spell.Title, Description = spell.DescriptionText }).ToList();
+ return await Task.FromResult(items);
+ }
+ }
+}
\ No newline at end of file
diff --git a/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs
index c58832a2..53e76a48 100644
--- a/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs
+++ b/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs
@@ -7,12 +7,14 @@ using Xamarin.Forms;
using AideDeJeu.Models;
using AideDeJeu.Services;
+using AideDeJeuLib;
namespace AideDeJeu.ViewModels
{
public class BaseViewModel : INotifyPropertyChanged
{
public IDataStore- DataStore => DependencyService.Get>() ?? new MockDataStore();
+ public IDataStore SpellDataStore => DependencyService.Get>() ?? new SpellDataStore();
bool isBusy = false;
public bool IsBusy
diff --git a/AideDeJeu/AideDeJeu/ViewModels/SpellDetailViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/SpellDetailViewModel.cs
new file mode 100644
index 00000000..0aea80d7
--- /dev/null
+++ b/AideDeJeu/AideDeJeu/ViewModels/SpellDetailViewModel.cs
@@ -0,0 +1,17 @@
+using System;
+
+using AideDeJeu.Models;
+using AideDeJeuLib;
+
+namespace AideDeJeu.ViewModels
+{
+ public class SpellDetailViewModel : BaseViewModel
+ {
+ public Spell Item { get; set; }
+ public SpellDetailViewModel(Spell item = null)
+ {
+ Title = item?.Title;
+ Item = item;
+ }
+ }
+}
diff --git a/AideDeJeu/AideDeJeu/ViewModels/SpellsViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/SpellsViewModel.cs
new file mode 100644
index 00000000..0f8016bf
--- /dev/null
+++ b/AideDeJeu/AideDeJeu/ViewModels/SpellsViewModel.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.ObjectModel;
+using System.Diagnostics;
+using System.Threading.Tasks;
+
+using Xamarin.Forms;
+
+using AideDeJeu.Models;
+using AideDeJeu.Views;
+using AideDeJeuLib;
+
+namespace AideDeJeu.ViewModels
+{
+ public class SpellsViewModel : BaseViewModel
+ {
+ public ObservableCollection Items { get; set; }
+ public Command LoadItemsCommand { get; set; }
+
+ public SpellsViewModel()
+ {
+ Title = "Browse";
+ Items = new ObservableCollection();
+ LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommand());
+
+ //MessagingCenter.Subscribe(this, "AddItem", async (obj, item) =>
+ //{
+ // var _item = item as Item;
+ // Items.Add(_item);
+ // await DataStore.AddItemAsync(_item);
+ //});
+ }
+
+ async Task ExecuteLoadItemsCommand()
+ {
+ if (IsBusy)
+ return;
+
+ IsBusy = true;
+
+ try
+ {
+ Items.Clear();
+ var items = await SpellDataStore.GetItemsAsync(true);
+ foreach (var item in items)
+ {
+ Items.Add(item);
+ }
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine(ex);
+ }
+ finally
+ {
+ IsBusy = false;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/AideDeJeu/AideDeJeu/Views/MainPage.xaml b/AideDeJeu/AideDeJeu/Views/MainPage.xaml
index f7549fe8..9c8327e1 100644
--- a/AideDeJeu/AideDeJeu/Views/MainPage.xaml
+++ b/AideDeJeu/AideDeJeu/Views/MainPage.xaml
@@ -104,9 +104,9 @@
-