1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 15:06:06 +00:00

Filtres dans md

This commit is contained in:
Yan Maniez 2018-07-15 15:18:21 +02:00
parent cdc8ca4a2f
commit 30bd94ddae
3 changed files with 54 additions and 77 deletions

View file

@ -9,7 +9,7 @@ namespace AideDeJeuLib
{
public override FilterViewModel GetNewFilterViewModel()
{
return new HDSpellFilterViewModel();
return new HDMonsterFilterViewModel();
}
}
}

View file

@ -14,12 +14,12 @@ namespace AideDeJeu.ViewModels
{
CancellationTokenSource cancellationTokenSource;
public ItemsViewModel(ItemSourceType itemSourceType)
public ItemsViewModel()
{
this.ItemSourceType = itemSourceType;
//this.ItemSourceType = itemSourceType;
LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommandAsync().ConfigureAwait(false));
Filter = Main.GetFilterViewModel(ItemSourceType);
Filter.LoadItemsCommand = LoadItemsCommand;
//Filter = Main.GetFilterViewModel(ItemSourceType);
//Filter.LoadItemsCommand = LoadItemsCommand;
SearchCommand = new Command<string>((text) =>
{
Filter.SearchText = text;
@ -32,19 +32,19 @@ namespace AideDeJeu.ViewModels
await Main.Navigator.GotoItemDetailPageAsync(item);
}
private ItemSourceType _ItemSourceType = ItemSourceType.SpellHD;
public ItemSourceType ItemSourceType
{
get
{
return _ItemSourceType;
}
set
{
SetProperty(ref _ItemSourceType, value);
OnPropertyChanged(nameof(Items));
}
}
//private ItemSourceType _ItemSourceType = ItemSourceType.SpellHD;
//public ItemSourceType ItemSourceType
//{
// get
// {
// return _ItemSourceType;
// }
// set
// {
// SetProperty(ref _ItemSourceType, value);
// OnPropertyChanged(nameof(Items));
// }
//}
private FilterViewModel _Filter;
public FilterViewModel Filter
@ -89,6 +89,14 @@ namespace AideDeJeu.ViewModels
}
}
public IEnumerable<Item> AllItems;
public async Task InitAsync()
{
//AllItems = await Main.GetAllItemsAsync(ItemSourceType);
Title = (AllItems as Item)?.Name;
Filter = (AllItems as Items).GetNewFilterViewModel(); //Main.GetFilterViewModel(ItemSourceType);
Filter.LoadItemsCommand = LoadItemsCommand;
}
async Task LoadItemsAsync(CancellationToken cancellationToken = default)
{
@ -96,11 +104,10 @@ namespace AideDeJeu.ViewModels
Main.IsLoading = true;
try
{
var filterViewModel = Filter;
var allItems = await Main.GetAllItemsAsync(ItemSourceType);
var items = await filterViewModel.FilterItems(allItems, cancellationToken: cancellationToken);
//var filterViewModel = Filter;
//var allItems = await Main.GetAllItemsAsync(ItemSourceType);
var items = await Filter.FilterItems(AllItems, cancellationToken: cancellationToken);
Items = items.ToList();
Title = (allItems as Item)?.Name;
}
catch (OperationCanceledException ex)
{

View file

@ -29,50 +29,16 @@ namespace AideDeJeu.ViewModels
set => SetProperty(ref _isLoading, value);
}
private Dictionary<ItemSourceType, IEnumerable<Item>> _AllItems = new Dictionary<ItemSourceType, IEnumerable<Item>>();
public async Task<IEnumerable<Item>> GetAllItemsAsync(ItemSourceType itemSourceType)
private Dictionary<string, IEnumerable<Item>> _AllItems = new Dictionary<string, IEnumerable<Item>>();
public async Task<IEnumerable<Item>> GetAllItemsAsync(string source)
{
if (!_AllItems.ContainsKey(itemSourceType))
if (!_AllItems.ContainsKey(source))
{
string resourceName = null;
switch (itemSourceType)
{
case ItemSourceType.MonsterVO:
{
resourceName = "monsters_vo";
//var md = await Tools.Helpers.GetStringFromUrl($"https://raw.githubusercontent.com/Nioux/AideDeJeu/master/Data/{source}.md");
var md = await Tools.Helpers.GetResourceStringAsync($"AideDeJeu.Data.{source}.md");
_AllItems[source] = Tools.MarkdownExtensions.ToItem(md) as IEnumerable<Item>;
}
break;
case ItemSourceType.MonsterHD:
{
resourceName = "monsters_hd";
}
break;
case ItemSourceType.SpellVO:
{
resourceName = "spells_vo";
}
break;
case ItemSourceType.SpellHD:
{
resourceName = "spells_hd";
}
break;
case ItemSourceType.ConditionVO:
{
resourceName = "conditions_vo";
}
break;
case ItemSourceType.ConditionHD:
{
resourceName = "conditions_hd";
}
break;
}
//var md = await Tools.Helpers.GetStringFromUrl($"https://raw.githubusercontent.com/Nioux/AideDeJeu/master/Data/{resourceName}.md");
var md = await Tools.Helpers.GetResourceStringAsync($"AideDeJeu.Data.{resourceName}.md");
_AllItems[itemSourceType] = Tools.MarkdownExtensions.ToItem(md) as IEnumerable<Item>;
}
return _AllItems[itemSourceType];
return _AllItems[source];
}
@ -87,19 +53,23 @@ namespace AideDeJeu.ViewModels
// new KeyValuePair<ItemSourceType, string>(ItemSourceType.ConditionVO, "Conditions (VO)"),
//};
public Dictionary<ItemSourceType, Func<ItemsViewModel>> AllItemsViewModel = new Dictionary<ItemSourceType, Func<ItemsViewModel>>()
{
{ ItemSourceType.SpellVO, () => new ItemsViewModel(ItemSourceType.SpellVO) },
{ ItemSourceType.SpellHD, () => new ItemsViewModel(ItemSourceType.SpellHD) },
{ ItemSourceType.MonsterVO, () => new ItemsViewModel(ItemSourceType.MonsterVO) },
{ ItemSourceType.MonsterHD, () => new ItemsViewModel(ItemSourceType.MonsterHD) },
{ ItemSourceType.ConditionHD, () => new ItemsViewModel(ItemSourceType.ConditionHD) },
{ ItemSourceType.ConditionVO, () => new ItemsViewModel(ItemSourceType.ConditionVO) },
};
//public Dictionary<ItemSourceType, Func<ItemsViewModel>> AllItemsViewModel = new Dictionary<ItemSourceType, Func<ItemsViewModel>>()
//{
// { ItemSourceType.SpellVO, () => new ItemsViewModel(ItemSourceType.SpellVO) },
// { ItemSourceType.SpellHD, () => new ItemsViewModel(ItemSourceType.SpellHD) },
// { ItemSourceType.MonsterVO, () => new ItemsViewModel(ItemSourceType.MonsterVO) },
// { ItemSourceType.MonsterHD, () => new ItemsViewModel(ItemSourceType.MonsterHD) },
// { ItemSourceType.ConditionHD, () => new ItemsViewModel(ItemSourceType.ConditionHD) },
// { ItemSourceType.ConditionVO, () => new ItemsViewModel(ItemSourceType.ConditionVO) },
//};
public ItemsViewModel GetItemsViewModel(ItemSourceType itemSourceType)
public async Task<ItemsViewModel> GetItemsViewModelAsync(string source)
{
return AllItemsViewModel[itemSourceType].Invoke();
var allItems = await GetAllItemsAsync(source);
var itemsViewModel = new ItemsViewModel(); //AllItemsViewModel[source].Invoke();
itemsViewModel.AllItems = allItems;
await itemsViewModel.InitAsync();
return itemsViewModel;
}
public Dictionary<ItemSourceType, Func<FilterViewModel>> AllFiltersViewModel = new Dictionary<ItemSourceType, Func<FilterViewModel>>()
@ -190,7 +160,7 @@ namespace AideDeJeu.ViewModels
var file = match.Groups["file"].Value;
var anchor = match.Groups["anchor"].Value;
var itemSourceType = MDFileToItemSourceType(file);
var spells = await GetAllItemsAsync(itemSourceType);
var spells = await GetAllItemsAsync(file);
var spell = spells.Where(i => Tools.Helpers.IdFromName(i.Name) == anchor).FirstOrDefault();
if (spell != null)
{
@ -202,8 +172,8 @@ namespace AideDeJeu.ViewModels
var regex = new Regex("/(?<file>.*)\\.md");
var match = regex.Match(s);
var file = match.Groups["file"].Value;
var itemSourceType = MDFileToItemSourceType(file);
var items = GetItemsViewModel(itemSourceType);
//var itemSourceType = MDFileToItemSourceType(file);
var items = await GetItemsViewModelAsync(file);
items.LoadItemsCommand.Execute(null);
await Navigator.GotoItemsPageAsync(items);
}