Skip to content

Commit

Permalink
More work on Sorting/Filtering + Removal of redundant page code
Browse files Browse the repository at this point in the history
  • Loading branch information
Hen676 committed Sep 18, 2022
1 parent d746b50 commit f8229b4
Show file tree
Hide file tree
Showing 12 changed files with 1,161 additions and 132 deletions.
531 changes: 531 additions & 0 deletions FadedVanguardLogUploader/Resources/Lang/Resources.Designer.cs

Large diffs are not rendered by default.

177 changes: 177 additions & 0 deletions FadedVanguardLogUploader/Resources/Lang/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,174 @@
<data name="LNG_List_Upload_Tooltip" xml:space="preserve">
<value>Uploads selected files</value>
</data>
<data name="LNG_Menu_Encounter_Adina" xml:space="preserve">
<value>Cardinal Sabir</value>
</data>
<data name="LNG_Menu_Encounter_AetherbladeHideout" xml:space="preserve">
<value>Aetherblade Hideout</value>
</data>
<data name="LNG_Menu_Encounter_Arkk" xml:space="preserve">
<value>Arkk</value>
</data>
<data name="LNG_Menu_Encounter_Artsariiv" xml:space="preserve">
<value>Artsariiv</value>
</data>
<data name="LNG_Menu_Encounter_BanditTrio" xml:space="preserve">
<value>Prison Camp</value>
</data>
<data name="LNG_Menu_Encounter_Boneskinner" xml:space="preserve">
<value>Boneskinner</value>
</data>
<data name="LNG_Menu_Encounter_BrokenKing" xml:space="preserve">
<value>Broken King</value>
</data>
<data name="LNG_Menu_Encounter_Cairn" xml:space="preserve">
<value>Cairn the Indomitable</value>
</data>
<data name="LNG_Menu_Encounter_ColdWar" xml:space="preserve">
<value>Cold War</value>
</data>
<data name="LNG_Menu_Encounter_ConjuredAmalgamate" xml:space="preserve">
<value>Conjured Amalgamate</value>
</data>
<data name="LNG_Menu_Encounter_Deimos" xml:space="preserve">
<value>Deimos</value>
</data>
<data name="LNG_Menu_Encounter_Dhuum" xml:space="preserve">
<value>Dhuum</value>
</data>
<data name="LNG_Menu_Encounter_EaterOfSouls" xml:space="preserve">
<value>Eater of Souls</value>
</data>
<data name="LNG_Menu_Encounter_Ensolyss" xml:space="preserve">
<value>Ensolyss of the Endless Torment</value>
</data>
<data name="LNG_Menu_Encounter_EOD" xml:space="preserve">
<value>End of Dragons</value>
</data>
<data name="LNG_Menu_Encounter_Escort" xml:space="preserve">
<value>Siege the Stronghold</value>
</data>
<data name="LNG_Menu_Encounter_Eyes" xml:space="preserve">
<value>Eye of Judgment &amp; Eye of Fate</value>
</data>
<data name="LNG_Menu_Encounter_ForgingSteel" xml:space="preserve">
<value>Forging Steel</value>
</data>
<data name="LNG_Menu_Encounter_FraenirOfJormag" xml:space="preserve">
<value>Fraenir of Jormag</value>
</data>
<data name="LNG_Menu_Encounter_Freezie" xml:space="preserve">
<value>Secret Lair of the Snowmen</value>
</data>
<data name="LNG_Menu_Encounter_Gorseval" xml:space="preserve">
<value>Gorseval the Multifarious</value>
</data>
<data name="LNG_Menu_Encounter_HarvestTemple" xml:space="preserve">
<value>Harvest Temple</value>
</data>
<data name="LNG_Menu_Encounter_KainengOverlook" xml:space="preserve">
<value>Kaineng Overlook</value>
</data>
<data name="LNG_Menu_Encounter_KeepConstruct" xml:space="preserve">
<value>Keep Construct</value>
</data>
<data name="LNG_Menu_Encounter_LW5" xml:space="preserve">
<value>The Icebrood Saga</value>
</data>
<data name="LNG_Menu_Encounter_MAMA" xml:space="preserve">
<value>MAMA</value>
</data>
<data name="LNG_Menu_Encounter_Mattias" xml:space="preserve">
<value>Matthias Gabrel</value>
</data>
<data name="LNG_Menu_Encounter_MursaatOverseer" xml:space="preserve">
<value>Mursaat Overseer</value>
</data>
<data name="LNG_Menu_Encounter_Nightmare" xml:space="preserve">
<value>Nightmare Fractal</value>
</data>
<data name="LNG_Menu_Encounter_Qadim" xml:space="preserve">
<value>Qadim</value>
</data>
<data name="LNG_Menu_Encounter_QadimThePeerless" xml:space="preserve">
<value>Qadim the Peerless</value>
</data>
<data name="LNG_Menu_Encounter_RiverOfSouls" xml:space="preserve">
<value>River of Souls</value>
</data>
<data name="LNG_Menu_Encounter_Sabetha" xml:space="preserve">
<value>Sabetha the Saboteur</value>
</data>
<data name="LNG_Menu_Encounter_Sabir" xml:space="preserve">
<value>Cardinal Adina</value>
</data>
<data name="LNG_Menu_Encounter_Samarog" xml:space="preserve">
<value>Samarog</value>
</data>
<data name="LNG_Menu_Encounter_ShatteredObservatory" xml:space="preserve">
<value>Shattered Observatory Fractal</value>
</data>
<data name="LNG_Menu_Encounter_ShiverpeaksPass" xml:space="preserve">
<value>Shiverpeaks Pass</value>
</data>
<data name="LNG_Menu_Encounter_Siax" xml:space="preserve">
<value>Siax the Corrupted</value>
</data>
<data name="LNG_Menu_Encounter_Skorvald" xml:space="preserve">
<value>Skorvald the Shattered</value>
</data>
<data name="LNG_Menu_Encounter_Slothasor" xml:space="preserve">
<value>Slothasor</value>
</data>
<data name="LNG_Menu_Encounter_SoullessHorror" xml:space="preserve">
<value>Soulless Horror</value>
</data>
<data name="LNG_Menu_Encounter_SunquaPeak" xml:space="preserve">
<value>Sunqua Peak Fractal</value>
</data>
<data name="LNG_Menu_Encounter_TwinLargos" xml:space="preserve">
<value>Twin Largos</value>
</data>
<data name="LNG_Menu_Encounter_TwistedCastle" xml:space="preserve">
<value>Twisted Castle</value>
</data>
<data name="LNG_Menu_Encounter_ValeGuardian" xml:space="preserve">
<value>Vale Guardian</value>
</data>
<data name="LNG_Menu_Encounter_VoiceAndClawOfTheFallen" xml:space="preserve">
<value>Voice of the Fallen and Claw of the Fallen</value>
</data>
<data name="LNG_Menu_Encounter_W1" xml:space="preserve">
<value>Spirit Vale</value>
</data>
<data name="LNG_Menu_Encounter_W2" xml:space="preserve">
<value>Salvation Pass</value>
</data>
<data name="LNG_Menu_Encounter_W3" xml:space="preserve">
<value>Stronghold of the Faithful</value>
</data>
<data name="LNG_Menu_Encounter_W4" xml:space="preserve">
<value>Bastion of the Penitent</value>
</data>
<data name="LNG_Menu_Encounter_W5" xml:space="preserve">
<value>Hall of Chains</value>
</data>
<data name="LNG_Menu_Encounter_W6" xml:space="preserve">
<value>Mythwright Gambit</value>
</data>
<data name="LNG_Menu_Encounter_W7" xml:space="preserve">
<value>The Key of Ahdashim</value>
</data>
<data name="LNG_Menu_Encounter_WhisperOfJormag" xml:space="preserve">
<value>Whisper of Jormag</value>
</data>
<data name="LNG_Menu_Encounter_Xera" xml:space="preserve">
<value>Xera</value>
</data>
<data name="LNG_Menu_Encounter_XunlaiJadeJunkyard" xml:space="preserve">
<value>Xunlai Jade Junkyard</value>
</data>
<data name="LNG_Menu_File" xml:space="preserve">
<value>_File</value>
</data>
Expand All @@ -154,6 +322,12 @@
<data name="LNG_Menu_Filter" xml:space="preserve">
<value>_Filter</value>
</data>
<data name="LNG_Menu_Filter_Fractels" xml:space="preserve">
<value>Fractels</value>
</data>
<data name="LNG_Menu_Filter_Raids" xml:space="preserve">
<value>Raids</value>
</data>
<data name="LNG_Menu_Filter_Sort" xml:space="preserve">
<value>_Sort</value>
</data>
Expand All @@ -175,6 +349,9 @@
<data name="LNG_Menu_Filter_Sort_Username" xml:space="preserve">
<value>Username</value>
</data>
<data name="LNG_Menu_Filter_Strikes" xml:space="preserve">
<value>Strikes</value>
</data>
<data name="LNG_Menu_Help" xml:space="preserve">
<value>_Help</value>
</data>
Expand Down
21 changes: 11 additions & 10 deletions FadedVanguardLogUploader/Settings/AppSettings.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using FadedVanguardLogUploader.Enums;
using System.Collections.Generic;
using System.Configuration;

namespace FadedVanguardLogUploader.Settings
Expand Down Expand Up @@ -45,16 +46,6 @@ public SortingType SortingType
}
}

[DefaultSettingValue("25"), UserScopedSetting]
public int PageAmount
{
get => (int)this[nameof(PageAmount)];
set
{
this[nameof(PageAmount)] = value;
}
}

[DefaultSettingValue("true"), UserScopedSetting]
public bool ErrorFilterToggle
{
Expand Down Expand Up @@ -84,5 +75,15 @@ public string Lang
this[nameof(Lang)] = value;
}
}

[DefaultSettingValue(""), UserScopedSetting]
public List<Encounter> FilterEncounter
{
get => (List<Encounter>)this[nameof(FilterEncounter)];
set
{
this[nameof(FilterEncounter)] = value;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class EncounterConverter : IValueConverter

public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
{
throw new NotImplementedException();
throw new NotSupportedException();
}
}
}
27 changes: 27 additions & 0 deletions FadedVanguardLogUploader/Utils/Converter/EnumConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Avalonia.Data;
using Avalonia.Data.Converters;
using FadedVanguardLogUploader.Enums;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FadedVanguardLogUploader.Utils.Converter
{
public class EnumConverter : IValueConverter
{
public static readonly EnumConverter Instance = new();

public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
{
return value?.Equals(parameter);
}

public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
{
return value?.Equals(true) == true ? parameter : BindingOperations.DoNothing;
}
}
}
27 changes: 0 additions & 27 deletions FadedVanguardLogUploader/Utils/Converter/PageConverter.cs

This file was deleted.

24 changes: 7 additions & 17 deletions FadedVanguardLogUploader/Utils/Filter.cs
Original file line number Diff line number Diff line change
@@ -1,33 +1,23 @@
using FadedVanguardLogUploader.Enums;
using FadedVanguardLogUploader.Models;
using System;
using System.Collections.Generic;

namespace FadedVanguardLogUploader.Utils
{
internal class Filter
{
public DateTimeOffset timeOffsetMin = DateTimeOffset.MinValue;
public DateTimeOffset timeOffsetMax = DateTimeOffset.MaxValue;
public Encounter encounter = Encounter.Empty;
public Specialization specialization = Specialization.Empty;
public List<Encounter> encounter = new();
// TODO Implement Spec filtering
//public Specialization specialization = Specialization.Empty;

public bool Predicate(ListItem i)
{
if (encounter == Encounter.Empty && specialization == Specialization.Empty)
return i.CreationDate >= timeOffsetMin &&
i.CreationDate <= timeOffsetMax;
if (encounter == Encounter.Empty && specialization != Specialization.Empty)
return i.CreationDate >= timeOffsetMin &&
i.CreationDate <= timeOffsetMax &&
i.CharcterSpec == specialization;
if(encounter != Encounter.Empty && specialization == Specialization.Empty)
return i.CreationDate >= timeOffsetMin &&
i.CreationDate <= timeOffsetMax &&
i.Encounter == encounter;
return i.CreationDate >= timeOffsetMin &&
i.CreationDate <= timeOffsetMax &&
i.Encounter == encounter &&
i.CharcterSpec == specialization;
return (encounter.Count == 0 || encounter.Contains(i.Encounter))
&& i.CreationDate >= timeOffsetMin
&& i.CreationDate <= timeOffsetMax;
}
}
}
18 changes: 17 additions & 1 deletion FadedVanguardLogUploader/ViewModels/ListViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public int ProgressBarMax
public Interaction<PopupViewModel, bool> ShowDialog { get; } = new Interaction<PopupViewModel, bool>();
private ConcurrentBag<ListItem> StoredItems = new();
private List<ListItem> FilteredItems = new();
private readonly Filter FilterSettings = new();
internal readonly Filter FilterSettings = new();
private int fileCount = 0;
private int progressBarValue = 0;
private int progressBarMax = 100;
Expand All @@ -49,6 +49,7 @@ public int ProgressBarMax
public ListViewModel()
{
UploadCommand = ReactiveCommand.Create(UploadAsync);
FilterSettings.encounter = App.Settings.FilterEncounter;
}

public void Load()
Expand All @@ -61,6 +62,21 @@ public void Load()
Filter();
}

public void FilterAddOrRemoveEncounter(Encounter encounter)
{
if (!FilterSettings.encounter.Contains(encounter))
FilterSettings.encounter.Add(encounter);
else
FilterSettings.encounter.Remove(encounter);

App.Settings.FilterEncounter = FilterSettings.encounter;
}
public void ClearFilter()
{
FilterSettings.encounter.Clear();
App.Settings.FilterEncounter.Clear();
}

private async void UploadAsync()
{
var popup = new PopupViewModel();
Expand Down
Loading

0 comments on commit f8229b4

Please sign in to comment.