< Summary

Information
Class: UIBlazor.Components.ApprovalModeSelector
Assembly: UIBlazor
File(s): /home/runner/work/InvAit/InvAit/UIBlazor/Components/ApprovalModeSelector.razor
Tag: 14_22728831704
Line coverage
0%
Covered lines: 0
Uncovered lines: 66
Coverable lines: 66
Total lines: 44
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 8
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Value()100%210%
get_ValueChanged()100%210%
render(...)100%210%

File(s)

/home/runner/work/InvAit/InvAit/UIBlazor/Components/ApprovalModeSelector.razor

#LineLine coverage
 1<RadzenDropDown TValue="ToolApprovalMode"
 2                Data="@(Enum.GetValues<ToolApprovalMode>())"
 3                Value="@Value"
 04                Change="@(args => ValueChanged.InvokeAsync((ToolApprovalMode)args))"
 5                @attributes="AdditionalAttributes"
 6                Style="width: 135px;">
 7
 8    <Template>
 09        @render(context)
 10    </Template>
 11
 12    <ValueTemplate>
 013        @render(context)
 14    </ValueTemplate>
 15
 16</RadzenDropDown>
 17
 18@code {
 019    [Parameter] public ToolApprovalMode Value { get; set; }
 020    [Parameter] public EventCallback<ToolApprovalMode> ValueChanged { get; set; }
 21
 22    // Локальный RenderFragment для исключения дублирования кода шаблонов
 023    private RenderFragment render(ToolApprovalMode mode) => __builder =>
 024    {
 025        var info = GetModeInfo(mode);
 026        <div style="display: flex; align-items: center; gap: 8px;">
 027            <RadzenIcon Icon="@info.Icon" Style="@($"color: {info.Color}; vertical-align: middle;")" />
 028            <span>@info.Text</span>
 029        </div>
 030    };
 031
 032    private (string Icon, string Color, string Text) GetModeInfo(ToolApprovalMode mode) => mode switch
 033    {
 034        ToolApprovalMode.Allow => ("check_circle", "var(--rz-success)", SharedResource.ApprovalModeAuto),
 035        ToolApprovalMode.Ask => ("help_outline", "var(--rz-warning)", SharedResource.ApprovalModeAsk),
 036        ToolApprovalMode.Deny => ("cancel", "var(--rz-danger)", SharedResource.ApprovalModeDeny),
 037        // лучше просто выключить вместо Deny, но вдруг захочется показать агенту тулзу, но не давать ее выполнить...
 038        _ => ("info", "gray", mode.ToString())
 039    };
 040
 041    // Позволяет передавать любые другие атрибуты RadzenSwitch (напр. Title, TabIndex)
 042    [Parameter(CaptureUnmatchedValues = true)]
 043    public Dictionary<string, object>? AdditionalAttributes { get; set; }
 044}