mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-30 06:56:10 +00:00
Filtres dans md
This commit is contained in:
parent
cdc8ca4a2f
commit
30bd94ddae
3 changed files with 54 additions and 77 deletions
|
|
@ -9,7 +9,7 @@ namespace AideDeJeuLib
|
|||
{
|
||||
public override FilterViewModel GetNewFilterViewModel()
|
||||
{
|
||||
return new HDSpellFilterViewModel();
|
||||
return new HDMonsterFilterViewModel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
}
|
||||
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>;
|
||||
//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>;
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue