< Summary

Information
Class: UIBlazor.Components.ToolViews.ToolCallBlock
Assembly: UIBlazor
File(s): /home/runner/work/InvAit/InvAit/UIBlazor/Components/ToolViews/ToolCallBlock.razor
Tag: 71_26091983037
Line coverage
0%
Covered lines: 0
Uncovered lines: 23
Coverable lines: 23
Total lines: 64
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 26
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
BuildRenderTree(...)0%272160%
<BuildRenderTree()100%210%
<BuildRenderTree()100%210%
get_Segment()100%210%
get_OnApproval()100%210%
get_ToolResult()100%210%
get_DisplayName()0%2040%
get_StatusClass()0%4260%

File(s)

/home/runner/work/InvAit/InvAit/UIBlazor/Components/ToolViews/ToolCallBlock.razor

#LineLine coverage
 1@inject IToolManager ToolManager
 2
 3<div class="tool-call-block" data-tool="@Segment.ToolName">
 4    <div class="tool-call-header @StatusClass">
 05        @SharedResource.CallingTool: <strong>@DisplayName</strong>@(Segment.IsClosed ? "" : " ...")
 6    </div>
 7
 08    @if (Segment.Lines.Count > 0)
 9    {
 10        <div class="tool-call-args">
 011            @if (Segment.ToolName == BuiltInToolEnum.ApplyDiff)
 12            {
 13                <DiffView LinesCount="@Segment.Lines.Count" ToolParams="@Segment.ToolParams" IsClosed="@Segment.IsClosed
 14            }
 015            else if (Segment.ToolName == BuiltInToolEnum.CreateFile)
 16            {
 17                <ToolCreateNewFile Lines="@Segment.Lines" />
 18            }
 019            else if (Segment.ToolName == BasicEnum.AskUser)
 20            {
 21                <ToolAskOptions Lines="@Segment.Lines" />
 22            }
 23            else
 24            {
 025                <pre>@string.Join("\n", Segment.Lines)</pre>
 26            }
 27        </div>
 28    }
 29
 030    @if (Segment.IsClosed)
 31    {
 32        <div class="tool-approval-footer @StatusClass">
 033            @if (Segment.ApprovalStatus == ToolApprovalStatus.Pending)
 34            {
 035                <div class="tool-approval-label"><i class="rz-icon-notification rz-ml-2"></i>@SharedResource.ApproveRequ
 36                <div class="tool-approval-actions">
 037                    <RadzenButton Icon="check" class="tool-approve-btn rz-m-2" Click="@(async () => await OnApproval.Inv
 038                    <RadzenButton Icon="close" class="tool-reject-btn rz-m-2" Click="@(async () => await OnApproval.Invo
 39                </div>
 40            }
 41        </div>
 042        @if (ToolResult is not null)
 43        {
 44            <Details Text="@ToolResult.DisplayName">
 045                <pre class="rz-p-2 rz-background-color-base-900 rz-color-white">@ToolResult.GetDisplayContent</pre>
 46            </Details>
 47        }
 48    }
 49</div>
 50
 51@code {
 052    [Parameter] public ContentSegment Segment { get; set; } = null!;
 053    [Parameter] public EventCallback<(string SegmentId, bool Approved)> OnApproval { get; set; }
 054    [Parameter] public ToolResult? ToolResult { get; set; }
 55
 056    private string DisplayName => ToolManager.GetTool(Segment.ToolName)?.DisplayName ?? Segment.ToolName;
 57
 058    private string StatusClass => Segment.ApprovalStatus switch
 059    {
 060        ToolApprovalStatus.Approved => "approved",
 061        ToolApprovalStatus.Rejected => "rejected",
 062        _ => "pending" // класс по умолчанию
 063    };
 64}