mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
support for _placefilter and _datacenterfilter
This commit is contained in:
parent
ed5457d1aa
commit
dcc820343b
@ -1021,4 +1021,7 @@ Selecting 'No' will ignore this warning and continue installation.</value>
|
|||||||
<data name="Common.SystemDefault" xml:space="preserve">
|
<data name="Common.SystemDefault" xml:space="preserve">
|
||||||
<value>System default</value>
|
<value>System default</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Menu.FastFlagEditor.InvalidPlaceFilter" xml:space="preserve">
|
||||||
|
<value>The entry for '{0}' is not valid as the place filter is not formatted correctly.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
@ -22,9 +22,15 @@ namespace Bloxstrap.UI.Elements.Menu.Pages
|
|||||||
private readonly ObservableCollection<FastFlag> _fastFlagList = new();
|
private readonly ObservableCollection<FastFlag> _fastFlagList = new();
|
||||||
private readonly List<string> _validPrefixes = new()
|
private readonly List<string> _validPrefixes = new()
|
||||||
{
|
{
|
||||||
"FFlag", "DFFlag", "SFFlag", "FInt", "DFInt", "FString", "DFString", "FLog", "DFlog"
|
"FFlag", "DFFlag", "SFFlag", "FInt", "DFInt", "FString", "DFString", "FLog", "DFLog"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// values must match the entire string to avoid cases where half the string
|
||||||
|
// matches but the filter would still be invalid
|
||||||
|
private readonly Regex _boolFilterPattern = new("(?:true|false)(;[\\d]{1,})+$");
|
||||||
|
private readonly Regex _intFilterPattern = new("([\\d]{1,})?(;[\\d]{1,})+$");
|
||||||
|
private readonly Regex _stringFilterPattern = new("^[^;]*(;[\\d]{1,})+$");
|
||||||
|
|
||||||
private bool _showPresets = false;
|
private bool _showPresets = false;
|
||||||
private string _searchFilter = "";
|
private string _searchFilter = "";
|
||||||
|
|
||||||
@ -253,15 +259,19 @@ namespace Bloxstrap.UI.Elements.Menu.Pages
|
|||||||
string lowerValue = value.ToLowerInvariant();
|
string lowerValue = value.ToLowerInvariant();
|
||||||
string errorMessage = "";
|
string errorMessage = "";
|
||||||
|
|
||||||
if (!_validPrefixes.Where(x => name.StartsWith(x)).Any())
|
if (!_validPrefixes.Any(name.StartsWith))
|
||||||
errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPrefix;
|
errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPrefix;
|
||||||
else if (!name.All(x => char.IsLetterOrDigit(x) || x == '_'))
|
else if (!name.All(x => char.IsLetterOrDigit(x) || x == '_'))
|
||||||
errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidCharacter;
|
errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidCharacter;
|
||||||
|
|
||||||
|
if (name.EndsWith("_PlaceFilter") || name.EndsWith("_DataCenterFilter"))
|
||||||
|
errorMessage = !Validate_Filter(name, value) ? Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidPlaceFilter : "";
|
||||||
else if ((name.StartsWith("FInt") || name.StartsWith("DFInt")) && !Int32.TryParse(value, out _))
|
else if ((name.StartsWith("FInt") || name.StartsWith("DFInt")) && !Int32.TryParse(value, out _))
|
||||||
errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidNumberValue;
|
errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidNumberValue;
|
||||||
else if ((name.StartsWith("FFlag") || name.StartsWith("DFFlag")) && lowerValue != "true" && lowerValue != "false")
|
else if ((name.StartsWith("FFlag") || name.StartsWith("DFFlag")) && lowerValue != "true" && lowerValue != "false")
|
||||||
errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidBoolValue;
|
errorMessage = Bloxstrap.Resources.Strings.Menu_FastFlagEditor_InvalidBoolValue;
|
||||||
|
|
||||||
|
|
||||||
if (!String.IsNullOrEmpty(errorMessage))
|
if (!String.IsNullOrEmpty(errorMessage))
|
||||||
{
|
{
|
||||||
Frontend.ShowMessageBox(String.Format(errorMessage, name), MessageBoxImage.Error);
|
Frontend.ShowMessageBox(String.Format(errorMessage, name), MessageBoxImage.Error);
|
||||||
@ -271,6 +281,18 @@ namespace Bloxstrap.UI.Elements.Menu.Pages
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool Validate_Filter(string name, string value)
|
||||||
|
{
|
||||||
|
if(name.StartsWith("FFlag") || name.StartsWith("DFFlag"))
|
||||||
|
return _boolFilterPattern.IsMatch(value);
|
||||||
|
if (name.StartsWith("FInt") || name.StartsWith("DFInt"))
|
||||||
|
return _intFilterPattern.IsMatch(value);
|
||||||
|
if (name.StartsWith("FString") || name.StartsWith("DFString") || name.StartsWith("FLog") || name.StartsWith("DFLog"))
|
||||||
|
return _stringFilterPattern.IsMatch(value);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// refresh list on page load to synchronize with preset page
|
// refresh list on page load to synchronize with preset page
|
||||||
private void Page_Loaded(object sender, RoutedEventArgs e) => ReloadList();
|
private void Page_Loaded(object sender, RoutedEventArgs e) => ReloadList();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user