Browse Source

Refactor feature management modal to improve disabled state handling and update feature selection logic

pull/22628/head
maliming 1 year ago
parent
commit
7304a0555b
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 63
      modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml
  2. 6
      modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs

63
modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml

@ -45,23 +45,23 @@
@for (var j = 0; j < featureGroup.Features.Count; j++)
{
var feature = featureGroup.Features[j];
var disabled = Model.IsDisabled(feature);
<div class="mt-2">
<input type="text" abp-id-name="@Model.FeatureGroups[i].Features[j].IsDisabled" value="@(disabled.ToString())" hidden/>
<input type="text" abp-id-name="@Model.FeatureGroups[i].Features[j].Type" value="@feature.ValueType?.Name" hidden/>
@if (feature.ValueType is ToggleStringValueType)
{
<abp-input asp-for="@feature.Value"
type="checkbox"
class="d-inline"
abp-id-name="@Model.FeatureGroups[i].Features[j].BoolValue"
label="@feature.DisplayName"
disabled="@Model.IsDisabled(feature)"
group-data-feature-name="@feature.Name"
group-data-parent-name="@(feature.ParentName ?? "")"
group-style="margin-inline-start: @(feature.Depth * 20)px"/>
@if (feature.Description != null)
<abp-input asp-for="@feature.Value"
type="checkbox"
class="d-inline"
abp-id-name="@Model.FeatureGroups[i].Features[j].BoolValue"
label="@feature.DisplayName"
disabled="disabled"
group-data-feature-name="@feature.Name"
group-data-parent-name="@(feature.ParentName ?? "")"
group-style="margin-inline-start: @(feature.Depth * 20)px"/>
if (feature.Description != null)
{
<div class="form-text" style="margin-inline-start: @(feature.Depth * 20)px">@feature.Description</div>
}
@ -69,20 +69,16 @@
@if (feature.ValueType is FreeTextStringValueType)
{
var type = "text";
if(feature.ValueType.Validator is NumericValueValidator)
{
type = "number";
}
<abp-input asp-for="@feature.Value"
label="@feature.DisplayName"
abp-id-name="@Model.FeatureGroups[i].Features[j].Value"
type="@type"
disabled="@Model.IsDisabled(feature)"
group-data-feature-name="@feature.Name"
group-data-parent-name="@(feature.ParentName ?? "")"
group-style="margin-inline-start: @(feature.Depth * 25)px"/>
@if (feature.Description != null)
var type = feature.ValueType.Validator is NumericValueValidator ? "number" : "text";
<abp-input asp-for="@feature.Value"
label="@feature.DisplayName"
abp-id-name="@Model.FeatureGroups[i].Features[j].Value"
type="@type"
disabled="disabled"
group-data-feature-name="@feature.Name"
group-data-parent-name="@(feature.ParentName ?? "")"
group-style="margin-inline-start: @(feature.Depth * 25)px"/>
if (feature.Description != null)
{
<div class="form-text" style="margin-inline-start: @(feature.Depth * 25)px">@feature.Description</div>
}
@ -90,20 +86,13 @@
@if (feature.ValueType is SelectionStringValueType selectType)
{
var disabled = Model.IsDisabled(feature) ? "disabled" : "";
<div data-feature-name="@feature.Name" data-parent-name="@(feature.ParentName ?? "")" style="margin-inline-start: @(feature.Depth * 25)px" class="mb-3">
<label class="form-label" for="@feature.Name">@feature.DisplayName</label>
<select id="@feature.Name" name="FeatureGroups[@i].Features[@j].Value" class="form-select" @(disabled) >
<select id="@feature.Name" name="FeatureGroups[@i].Features[@j].Value" class="form-select" @(disabled ? "disabled" : "")>
@foreach (var item in selectType.ItemSource.Items)
{
if (item.Value == feature.Value)
{
<option value="@item.Value" selected="selected"> @CreateHtmlLocalizer(item.DisplayText.ResourceName).GetString(item.DisplayText.Name) </option>
}
else
{
<option value="@item.Value"> @CreateHtmlLocalizer(item.DisplayText.ResourceName).GetString(item.DisplayText.Name) </option>
}
var selected = item.Value == feature.Value ? "selected=\"selected\"" : "";
<!option value="@item.Value" @(selected) >@CreateHtmlLocalizer(item.DisplayText.ResourceName).GetString(item.DisplayText.Name) </!option>
}
</select>
@if (feature.Description != null)
@ -112,8 +101,8 @@
}
</div>
}
<input value="@feature.Name" abp-id-name="@Model.FeatureGroups[i].Features[j].Name" hidden/>
</div>
}
</div>

6
modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs

@ -69,7 +69,7 @@ public class FeatureManagementModal : AbpPageModel
{
var features = new UpdateFeaturesDto
{
Features = FeatureGroups.SelectMany(g => g.Features).Where(x => !x.Value.IsNullOrWhiteSpace() || x.BoolValue.HasValue).Select(f => new UpdateFeatureDto
Features = FeatureGroups.SelectMany(g => g.Features).Where(x => !x.IsDisabled).Select(f => new UpdateFeatureDto
{
Name = f.Name,
Value = f.Type == nameof(ToggleStringValueType) ? f.BoolValue.ToString() : f.Value
@ -97,11 +97,13 @@ public class FeatureManagementModal : AbpPageModel
public class FeatureViewModel
{
public bool IsDisabled { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public bool? BoolValue { get; set; }
public bool BoolValue { get; set; }
public string Type { get; set; }
}

Loading…
Cancel
Save