Browse Source

Improved feature management blazor modal

Closes: https://github.com/abpframework/abp/issues/5540
pull/5599/head
Ahmet 6 years ago
parent
commit
60e28c8455
  1. 125
      modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor
  2. 21
      modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor.cs

125
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor

@ -11,75 +11,80 @@
<CloseButton Clicked="CloseModal" /> <CloseButton Clicked="CloseModal" />
</ModalHeader> </ModalHeader>
<ModalBody MaxHeight="50"> <ModalBody MaxHeight="50">
@if (_groups == null) <EditForm id="UpdateFeaturesForm" OnValidSubmit="SaveAsync">
{ @if (_groups == null)
<span>@L["NoFeatureFoundMessage"]</span> {
} <span>@L["NoFeatureFoundMessage"]</span>
else }
{ else
<Tabs TabPosition="TabPosition.Left" Pills="true" SelectedTab="@GetNormalizedGroupName(_groups.First().Name)"> {
<Items> <Tabs TabPosition="TabPosition.Left" Pills="true" SelectedTab="@GetNormalizedGroupName(_groups.First().Name)">
@foreach (var group in _groups) <Items>
{ @foreach (var group in _groups)
<Tab Name="@GetNormalizedGroupName(group.Name)"> {
<span>@group.DisplayName</span> <Tab Name="@GetNormalizedGroupName(group.Name)">
</Tab> <span>@group.DisplayName</span>
} </Tab>
</Items> }
<Content> </Items>
@foreach (var group in _groups) <Content>
{ @foreach (var group in _groups)
<TabPanel Name="@GetNormalizedGroupName(group.Name)"> {
<h4>@group.DisplayName</h4> <TabPanel Name="@GetNormalizedGroupName(group.Name)">
<h4>@group.DisplayName</h4>
@foreach (var feature in group.Features)
{
var disabled = IsDisabled(feature.Provider.Name);
if (feature.ValueType is FreeTextStringValueType) @foreach (var feature in group.Features)
{ {
<Field> var disabled = IsDisabled(feature.Provider.Name);
<FieldLabel>@feature.DisplayName</FieldLabel>
<TextEdit Disabled="@disabled" @bind-text="@feature.Value" />
@if (feature.Description != null)
{
<span>@feature.Description</span>
}
</Field>
}
if (feature.ValueType is SelectionStringValueType)
{
var items = ((SelectionStringValueType) feature.ValueType).ItemSource.Items;
<Field> if (feature.ValueType is FreeTextStringValueType)
<FieldLabel>@feature.DisplayName</FieldLabel> {
<Select TValue="string" SelectedValue="feature.Value"> <Field>
@foreach (var item in items) <FieldLabel>@feature.DisplayName</FieldLabel>
<TextEdit
Disabled="@disabled"
Text="@feature.Value"
TextChanged="@(async(v) => await OnFeatureValueChangedAsync(v, feature))" />
@if (feature.Description != null)
{ {
<SelectItem Value="@item.Value">@item.DisplayText</SelectItem> <span>@feature.Description</span>
} }
</Select> </Field>
</Field> }
if (feature.ValueType is SelectionStringValueType)
{
var items = ((SelectionStringValueType) feature.ValueType).ItemSource.Items;
<Field>
<FieldLabel>@feature.DisplayName</FieldLabel>
<Select TValue="string" SelectedValue="feature.Value">
@foreach (var item in items)
{
<SelectItem Value="@item.Value">@item.DisplayText</SelectItem>
}
</Select>
</Field>
}
if (feature.ValueType is ToggleStringValueType)
{
<Field>
<Check TValue="bool" @bind-checked="@_toggleValues[feature.Name]">@feature.DisplayName</Check>
</Field>
}
} }
if (feature.ValueType is ToggleStringValueType) </TabPanel>
{ }
<Field> </Content>
<Check TValue="bool" @bind-checked="@ToggleValues[feature.Name]">@feature.DisplayName</Check> </Tabs>
</Field> }
} </EditForm>
}
</TabPanel>
}
</Content>
</Tabs>
}
</ModalBody> </ModalBody>
<ModalFooter> <ModalFooter>
<Button Color="Color.Secondary" Clicked="CloseModal">@L["Cancel"]</Button> <Button Color="Color.Secondary" Clicked="CloseModal">@L["Cancel"]</Button>
<Button Color="Color.Primary" Clicked="SaveAsync">@L["Save"]</Button> <Button form="UpdateFeaturesForm" Color="Color.Primary" Clicked="SaveAsync">@L["Save"]</Button>
</ModalFooter> </ModalFooter>
</ModalContent> </ModalContent>
</Modal> </Modal>

21
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor/Components/FeatureManagementModal.razor.cs

@ -3,6 +3,7 @@ using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Blazorise; using Blazorise;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Volo.Abp.AspNetCore.Components.WebAssembly;
using Volo.Abp.Features; using Volo.Abp.Features;
using Volo.Abp.Validation.StringValues; using Volo.Abp.Validation.StringValues;
@ -11,6 +12,8 @@ namespace Volo.Abp.FeatureManagement.Blazor.Components
public partial class FeatureManagementModal public partial class FeatureManagementModal
{ {
[Inject] private IFeatureAppService FeatureAppService { get; set; } [Inject] private IFeatureAppService FeatureAppService { get; set; }
[Inject] protected IUiMessageService UiMessageService { get; set; }
private Modal _modal; private Modal _modal;
@ -19,7 +22,7 @@ namespace Volo.Abp.FeatureManagement.Blazor.Components
private List<FeatureGroupDto> _groups { get; set; } private List<FeatureGroupDto> _groups { get; set; }
private Dictionary<string, bool> ToggleValues; private Dictionary<string, bool> _toggleValues;
public async Task OpenAsync(string providerName, string providerKey) public async Task OpenAsync(string providerName, string providerKey)
{ {
@ -28,7 +31,7 @@ namespace Volo.Abp.FeatureManagement.Blazor.Components
_groups = (await FeatureAppService.GetAsync(_providerName, _providerKey)).Groups; _groups = (await FeatureAppService.GetAsync(_providerName, _providerKey)).Groups;
ToggleValues = _groups _toggleValues = _groups
.SelectMany(x => x.Features) .SelectMany(x => x.Features)
.Where(x => x.ValueType is ToggleStringValueType) .Where(x => x.ValueType is ToggleStringValueType)
.ToDictionary(x => x.Name, x => bool.Parse(x.Value)); .ToDictionary(x => x.Name, x => bool.Parse(x.Value));
@ -48,7 +51,7 @@ namespace Volo.Abp.FeatureManagement.Blazor.Components
Features = _groups.SelectMany(g => g.Features).Select(f => new UpdateFeatureDto Features = _groups.SelectMany(g => g.Features).Select(f => new UpdateFeatureDto
{ {
Name = f.Name, Name = f.Name,
Value = f.ValueType is ToggleStringValueType ? ToggleValues[f.Name].ToString() : f.Value Value = f.ValueType is ToggleStringValueType ? _toggleValues[f.Name].ToString() : f.Value
}).ToList() }).ToList()
}; };
@ -66,5 +69,17 @@ namespace Volo.Abp.FeatureManagement.Blazor.Components
{ {
return providerName != _providerName && providerName != DefaultValueFeatureValueProvider.ProviderName; return providerName != _providerName && providerName != DefaultValueFeatureValueProvider.ProviderName;
} }
private async Task OnFeatureValueChangedAsync(string value, FeatureDto feature)
{
if (feature.ValueType.Validator.IsValid(value))
{
feature.Value = value;
}
else
{
await UiMessageService.WarnAsync(L["Volo.Abp.FeatureManagement:InvalidFeatureValue", feature.DisplayName]);
}
}
} }
} }
Loading…
Cancel
Save