Skip to content

Commit

Permalink
- Added ApplyDelimiter Before/After functionality for components
Browse files Browse the repository at this point in the history
  • Loading branch information
BryanSoltis committed Nov 20, 2023
1 parent 2ec5ef2 commit 31a6e3a
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 13 deletions.
6 changes: 4 additions & 2 deletions src/Models/ResourceComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ public class ResourceComponent
{
public long Id { get; set; }
[Required()]
public string Name { get; set; } = String.Empty;
public string Name { get; set; } = String.Empty;
[Required()]
public string DisplayName { get; set; } = String.Empty;
public string DisplayName { get; set; } = String.Empty;
[Required()]
public bool Enabled { get; set; }
public int SortOrder { get; set; } = 0;
Expand All @@ -18,5 +18,7 @@ public class ResourceComponent
public string MaxLength { get; set; } = "10";
public bool EnforceRandom { get; set; } = false;
public bool Alphanumeric { get; set; } = true;
public bool ApplyDelimiterBefore { get; set; } = true;
public bool ApplyDelimiterAfter { get; set; } = true;
}
}
43 changes: 33 additions & 10 deletions src/Services/ResourceNamingRequestService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public static async Task<ResourceNameResponse> RequestNameWithComponents(Resourc
bool valid = true;
bool ignoredelimeter = false;
List<string[]> lstComponents = new();
bool previousdelimiterappliedafter = true;

// Get the specified resource type
//var resourceTypes = await ConfigurationHelper.GetList<ResourceType>();
Expand Down Expand Up @@ -94,7 +95,11 @@ public static async Task<ResourceNameResponse> RequestNameWithComponents(Resourc
{
if (!String.IsNullOrEmpty(name))
{
name += request.ResourceDelimiter.Delimiter;
// Check if the component should apply the delimiter
if ((component.ApplyDelimiterBefore) && (previousdelimiterappliedafter))
{
name += request.ResourceDelimiter.Delimiter;
}
}
}
else
Expand All @@ -110,7 +115,11 @@ public static async Task<ResourceNameResponse> RequestNameWithComponents(Resourc
// Deliemeter is valid so add it
if (!String.IsNullOrEmpty(name))
{
name += request.ResourceDelimiter.Delimiter;
// Check if the component should apply the delimiter
if ((component.ApplyDelimiterBefore) && (previousdelimiterappliedafter))
{
name += request.ResourceDelimiter.Delimiter;
}
}
}
}
Expand Down Expand Up @@ -144,6 +153,7 @@ public static async Task<ResourceNameResponse> RequestNameWithComponents(Resourc
}
}
}
previousdelimiterappliedafter = component.ApplyDelimiterAfter;
}
}
// Check if the required component were supplied
Expand Down Expand Up @@ -245,6 +255,7 @@ public static async Task<ResourceNameResponse> RequestName(ResourceNameRequest r
ResourceType resourceType = new();
string name = "";
StringBuilder sbMessage = new();
bool previousdelimiterappliedafter = true;

// Get the current delimiter
serviceResponse = await ResourceDelimiterService.GetCurrentItem();
Expand Down Expand Up @@ -448,19 +459,22 @@ public static async Task<ResourceNameResponse> RequestName(ResourceNameRequest r
}
break;
}
//var items = await ConfigurationHelper.GetList<ResourceComponent>();

// Check if the delimeter is already ignored
// Check if the delimiter is already ignored
if ((!ignoredelimeter) && (!String.IsNullOrEmpty(resourceDelimiter.Delimiter)))
{
// Check if delimeter is an invalid character
// Check if delimiter is an invalid character
if (!String.IsNullOrEmpty(resourceType.InvalidCharacters))
{
if (!resourceType.InvalidCharacters.Contains(resourceDelimiter.Delimiter))
{
if (name != "")
{
name += resourceDelimiter.Delimiter;
// Check if the component should apply the delimiter
if ((component.ApplyDelimiterBefore) && (previousdelimiterappliedafter))
{
name += resourceDelimiter.Delimiter;
}
}
}
else
Expand All @@ -472,10 +486,14 @@ public static async Task<ResourceNameResponse> RequestName(ResourceNameRequest r
}
else
{
// Deliemeter is valid so add it
// Delimiter is valid so add it
if (!String.IsNullOrEmpty(name))
{
name += resourceDelimiter.Delimiter;
// Check if the component should apply the delimiter
if ((component.ApplyDelimiterBefore) && (previousdelimiterappliedafter))
{
name += resourceDelimiter.Delimiter;
}
}
}
}
Expand Down Expand Up @@ -622,7 +640,6 @@ public static async Task<ResourceNameResponse> RequestName(ResourceNameRequest r
// Check if the custom compoment value was provided in the request
if (request.CustomComponents.ContainsKey(normalizedcomponentname))
{

// Get the value from the provided custom components
var componentvalue = request.CustomComponents[normalizedcomponentname];
if (!GeneralHelper.IsNotNull(componentvalue))
Expand All @@ -641,7 +658,11 @@ public static async Task<ResourceNameResponse> RequestName(ResourceNameRequest r
{
if (!String.IsNullOrEmpty(name))
{
name += resourceDelimiter.Delimiter;
// Check if the component should apply the delimiter
if ((component.ApplyDelimiterBefore) && (previousdelimiterappliedafter))
{
name += resourceDelimiter.Delimiter;
}
}

name += componentvalue;
Expand Down Expand Up @@ -682,6 +703,8 @@ public static async Task<ResourceNameResponse> RequestName(ResourceNameRequest r
}
}
}
// Set the previous apply deimiter flag
previousdelimiterappliedafter = component.ApplyDelimiterAfter;
}
}
}
Expand Down
42 changes: 41 additions & 1 deletion src/Shared/Modals/AddModal.razor
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,36 @@
<input title="Maximum Length" value="@itemMaxLength" type="text" class="form-control @theme.ThemeStyle" id="maxlength" @onchange="@((ui) => { itemMaxLength = (string)ui.Value!;})" onkeypress="return (event.charCode !=8 && event.charCode ==0 || (event.charCode >= 48 && event.charCode <= 57))" />
</div>
</div>
<div class="mb-3">
<div class="fw-bold">
Apply Before
</div>
<div class="mb-3">
If disabled, this setting will not add the current delimiter BEFORE the component value.
</div>
<div>
<label class="switch" title="Apply Delimiter">
<input type="checkbox" checked="@itemApplyDelimiterBefore" @oninput='args => ComponentSettingChanged(args, "applydelimiterbefore")'>
<span class="slider round"></span>
</label>
<span class="align-text-top"> Enable</span>
</div>
</div>
<div class="mb-3">
<div class="fw-bold">
Apply Delimiter After
</div>
<div class="mb-3">
If disabled, this setting will not add the current delimiter AFTER the component value.
</div>
<div>
<label class="switch" title="Apply Delimiter">
<input type="checkbox" checked="@itemApplyDelimiterAfter" @oninput='args => ComponentSettingChanged(args, "applydelimiterafter")'>
<span class="slider round"></span>
</label>
<span class="align-text-top"> Enable</span>
</div>
</div>
</div>
break;
case "AdminUser":
Expand Down Expand Up @@ -142,6 +172,8 @@
private bool itemEnforceRandom = false;
private bool itemAlphanumeric = true;
private bool itemIsFreeText = false;
private bool itemApplyDelimiterBefore = true;
private bool itemApplyDelimiterAfter = true;
private string currentuser = String.Empty;

protected override async void OnInitialized()
Expand Down Expand Up @@ -187,7 +219,9 @@
MinLength = itemMinLength,
MaxLength = itemMaxLength,
EnforceRandom = itemEnforceRandom,
Alphanumeric = itemAlphanumeric
Alphanumeric = itemAlphanumeric,
ApplyDelimiterBefore = itemApplyDelimiterBefore,
ApplyDelimiterAfter = itemApplyDelimiterAfter
};
serviceResponse = await ResourceComponentService.PostItem(resourceComponent);
}
Expand Down Expand Up @@ -424,6 +458,12 @@
case "alphanumeric":
itemAlphanumeric = (bool)e.Value;
break;
case "applydelimiterbefore":
itemApplyDelimiterBefore = (bool)e.Value;
break;
case "applydelimiterafter":
itemApplyDelimiterAfter = (bool)e.Value;
break;
}
}
else
Expand Down
45 changes: 45 additions & 0 deletions src/Shared/Modals/EditModal.razor
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,39 @@
<input title="Maximum Length" value="@itemMaxLength" type="text" class="form-control @theme.ThemeStyle" id="maxlength" @onchange="@((ui) => { itemMaxLength = (string)ui.Value!;})" onkeypress="return (event.charCode !=8 && event.charCode ==0 || (event.charCode >= 48 && event.charCode <= 57))" />
</div>
</div>
@if (type == "ResourceComponent")
{
<div class="mb-3">
<div class="fw-bold">
Apply Delimiter Before
</div>
<div class="mb-3">
If disabled, this setting will not add the current delimiter BEFORE the component value.
</div>
<div>
<label class="switch" title="Apply Delimiter">
<input type="checkbox" checked="@itemApplyDelimiterBefore" @oninput='args => ComponentSettingChanged(args, "applydelimiterbefore")'>
<span class="slider round"></span>
</label>
<span class="align-text-top"> Enable</span>
</div>
</div>
<div class="mb-3">
<div class="fw-bold">
Apply Delimiter After
</div>
<div class="mb-3">
If disabled, this setting will not add the current delimiter AFTER the component value.
</div>
<div>
<label class="switch" title="Apply Delimiter">
<input type="checkbox" checked="@itemApplyDelimiterAfter" @oninput='args => ComponentSettingChanged(args, "applydelimiterafter")'>
<span class="slider round"></span>
</label>
<span class="align-text-top"> Enable</span>
</div>
</div>
}
}
else
{
Expand Down Expand Up @@ -378,6 +411,8 @@
private bool itemOriginalStandard = false;
private bool itemEnforceRandom = false;
private bool itemAlphanumeric = true;
private bool itemApplyDelimiterBefore = true;
private bool itemApplyDelimiterAfter = true;
private List<ResourceComponent> resourceComponents = new();
private string optional = String.Empty;
private string exclude = String.Empty;
Expand Down Expand Up @@ -411,6 +446,8 @@
itemOriginalStandard = !resourceComponent.IsFreeText;
itemEnforceRandom = resourceComponent.EnforceRandom;
itemAlphanumeric = resourceComponent.Alphanumeric;
itemApplyDelimiterBefore = resourceComponent.ApplyDelimiterBefore;
itemApplyDelimiterAfter = resourceComponent.ApplyDelimiterAfter;
break;
case "ResourceEnvironment":
ResourceEnvironment resourceEnvironment = servicesData.ResourceEnvironments!.Find(x => x.Id == id)!;
Expand Down Expand Up @@ -515,6 +552,8 @@
}
resourceComponent.MinLength = itemMinLength;
resourceComponent.MaxLength = itemMaxLength;
resourceComponent.ApplyDelimiterBefore = itemApplyDelimiterBefore;
resourceComponent.ApplyDelimiterAfter = itemApplyDelimiterAfter;

// Check if the user is changing from Standard to Free Text.
if ((itemOriginalStandard) && (resourceComponent.IsFreeText))
Expand Down Expand Up @@ -829,6 +868,12 @@
case "alphanumeric":
itemAlphanumeric = (bool)e.Value;
break;
case "applydelimiterbefore":
itemApplyDelimiterBefore = (bool)e.Value;
break;
case "applydelimiterafter":
itemApplyDelimiterAfter = (bool)e.Value;
break;
}
}
else
Expand Down

0 comments on commit 31a6e3a

Please sign in to comment.