-
-
Notifications
You must be signed in to change notification settings - Fork 382
Expand file tree
/
Copy pathNumberSearchMetadata.cs
More file actions
142 lines (127 loc) · 4.43 KB
/
NumberSearchMetadata.cs
File metadata and controls
142 lines (127 loc) · 4.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the Apache 2.0 License
// See the LICENSE file in the project root for more information.
// Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone
namespace BootstrapBlazor.Components;
/// <summary>
/// <para lang="zh">数字类型搜索元数据类</para>
/// <para lang="en">Number type search metadata class</para>
/// <para>v<version>10.5.0</version></para>
/// </summary>
public class NumberSearchMetadata : SearchFormItemMetadataBase
{
/// <summary>
/// <para lang="zh">获得/设置 搜索开始值</para>
/// <para lang="en">Gets or sets the search start value</para>
/// </summary>
public string? StartValue { get; set; }
/// <summary>
/// <para lang="zh">获得/设置 搜索开始值标签文本</para>
/// <para lang="en">Gets or sets the search start value label text</para>
/// </summary>
public string? StartValueLabelText { get; set; }
/// <summary>
/// <para lang="zh">获得/设置 搜索结束值</para>
/// <para lang="en">Gets or sets the search end value</para>
/// </summary>
public string? EndValue { get; set; }
/// <summary>
/// <para lang="zh">获得/设置 搜索结束值标签文本</para>
/// <para lang="en">Gets or sets the search end value label text</para>
/// </summary>
public string? EndValueLabelText { get; set; }
/// <summary>
/// <para lang="zh">获得/设置 搜索值类型名称 用于将输入的字符串转换为指定类型进行比较</para>
/// <para lang="en">Gets or sets the search value type name, used to convert the input string to the specified type for comparison</para>
/// </summary>
public Type? ValueType { get; set; }
/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="fieldName"></param>
/// <returns></returns>
public override FilterKeyValueAction? GetFilter(string fieldName)
{
// 如果用户设置了 GetFilterCallback 回调,则调用该回调获取过滤器实例
if (GetFilterCallback != null)
{
return GetFilterCallback((StartValue: StartValue, EndValue: EndValue));
}
if (string.IsNullOrEmpty(StartValue) && string.IsNullOrEmpty(EndValue))
{
return null;
}
var filter = new FilterKeyValueAction() { Filters = [] };
if (!string.IsNullOrEmpty(StartValue))
{
var v = ParseTypeValue(ValueType, StartValue);
if (v != null)
{
filter.Filters.Add(new FilterKeyValueAction()
{
FieldKey = fieldName,
FieldValue = v,
FilterLogic = FilterLogic,
FilterAction = FilterAction.GreaterThanOrEqual
});
}
else
{
StartValue = null;
}
}
if (!string.IsNullOrEmpty(EndValue))
{
var v = ParseTypeValue(ValueType, EndValue);
if (v != null)
{
filter.Filters.Add(new FilterKeyValueAction()
{
FieldKey = fieldName,
FieldValue = v,
FilterLogic = FilterLogic,
FilterAction = FilterAction.LessThanOrEqual
});
}
else
{
EndValue = null;
}
}
return filter;
}
/// <summary>
/// <para lang="zh">搜索值变化事件处理器</para>
/// <para lang="en">Search value changed event handler</para>
/// </summary>
/// <param name="value"></param>
public async Task StartValueChangedHandler(string? value)
{
StartValue = value;
if (ValueChanged != null)
{
await ValueChanged();
}
}
/// <summary>
/// <para lang="zh">搜索值变化事件处理器</para>
/// <para lang="en">Search value changed event handler</para>
/// </summary>
/// <param name="value"></param>
public async Task EndValueChangedHandler(string? value)
{
EndValue = value;
if (ValueChanged != null)
{
await ValueChanged();
}
}
/// <summary>
/// <inheritdoc/>
/// </summary>
public override void Reset()
{
StartValue = null;
EndValue = null;
}
}