Skip to content

Commit 57e32c2

Browse files
committed
refactor: 重构代码
1 parent 3e9f309 commit 57e32c2

File tree

3 files changed

+41
-35
lines changed

3 files changed

+41
-35
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the Apache 2.0 License
3+
// See the LICENSE file in the project root for more information.
4+
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone
5+
6+
namespace BootstrapBlazor.Components;
7+
8+
class GroupFilterKeyValueAction : FilterKeyValueAction
9+
{
10+
public GroupFilterKeyValueAction()
11+
{
12+
FilterLogic = FilterLogic.Or;
13+
}
14+
}

src/BootstrapBlazor/Components/QueryBuilder/QueryBuilder.razor

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<CascadingValue Value="Value.Filters" IsFixed="true">
77
@ChildContent?.Invoke(new TModel())
88
</CascadingValue>
9-
@if (!Value.HasFilters() && ShowHeader)
9+
@if (ShowHeader && Value.Filters.Count == 0)
1010
{
1111
@RenderHeader(null, Value)
1212
}
@@ -17,6 +17,29 @@
1717
</div>
1818

1919
@code {
20+
RenderFragment RenderFilters(FilterKeyValueAction? parent, FilterKeyValueAction filter) =>
21+
@<ul class="qb-group">
22+
@if (IsShowHeader(filter))
23+
{
24+
<li class="qb-item">
25+
@RenderHeader(parent, filter)
26+
</li>
27+
}
28+
@foreach (var f in filter.Filters)
29+
{
30+
<li class="qb-item">
31+
@if (IsGroup(f))
32+
{
33+
@RenderFilters(filter, f)
34+
}
35+
else
36+
{
37+
@RenderFilter(filter, f)
38+
}
39+
</li>
40+
}
41+
</ul>;
42+
2043
RenderFragment RenderFilter(FilterKeyValueAction parent, FilterKeyValueAction filter) =>
2144
@<div class="qb-row">
2245
<Select Items="_fields" @bind-Value="@filter.FieldKey" />

src/BootstrapBlazor/Components/QueryBuilder/QueryBuilder.razor.cs

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ private Task SetFilterLogic(FilterKeyValueAction? parent, FilterKeyValueAction f
194194

195195
private async Task OnAddFilterGroup(FilterKeyValueAction filter)
196196
{
197-
filter.Filters.Add(new FilterKeyValueAction());
197+
filter.Filters.Add(new GroupFilterKeyValueAction());
198198

199199
await OnFilterChanged();
200200
}
@@ -220,38 +220,7 @@ private static Color GetColorByFilter(FilterKeyValueAction filter, FilterLogic l
220220

221221
private readonly List<SelectedItem> _fields = [];
222222

223-
RenderFragment RenderFilters(FilterKeyValueAction? parent, FilterKeyValueAction filter) => builder =>
224-
{
225-
var index = 0;
226-
builder.OpenElement(index++, "ul");
227-
builder.AddAttribute(index++, "class", "qb-group");
228-
if (filter.HasFilters() && ShowHeader)
229-
{
230-
builder.OpenElement(index++, "li");
231-
builder.AddAttribute(index++, "class", "qb-item");
232-
builder.AddContent(index++, RenderHeader(parent, filter));
233-
builder.CloseElement();
234-
}
235-
foreach (var f in filter.Filters)
236-
{
237-
if (f.HasFilters())
238-
{
239-
RenderFilterItem(ref index, RenderFilters(filter, f));
240-
}
241-
else
242-
{
243-
RenderFilterItem(ref index, RenderFilter(filter, f));
244-
}
245-
}
246-
builder.CloseElement();
223+
private bool IsShowHeader(FilterKeyValueAction filter) => ShowHeader && IsGroup(filter);
247224

248-
void RenderFilterItem(ref int sequence, RenderFragment fragment)
249-
{
250-
builder.OpenElement(sequence++, "li");
251-
builder.AddAttribute(sequence++, "class", "qb-item");
252-
builder.AddAttribute(sequence++, "data-bb-logic", Localizer[filter.FilterLogic.ToString()]);
253-
builder.AddContent(sequence++, fragment);
254-
builder.CloseElement();
255-
}
256-
};
225+
private static bool IsGroup(FilterKeyValueAction filter) => filter is GroupFilterKeyValueAction || filter.Filters.Count > 0;
257226
}

0 commit comments

Comments
 (0)