< Summary

Information
Class: Utility.Components.SQLInput.SQLInput
Assembly: Utility
File(s): /home/runner/work/Utility-Blazor/Utility-Blazor/src/Utility/Components/SQLInput/SQLInput.razor
Tag: 231_14069517506
Line coverage
0%
Covered lines: 0
Uncovered lines: 21
Coverable lines: 21
Total lines: 75
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%210%
CopyField()100%210%
ClearField()100%210%
Clear()100%210%
Parse()100%210%
Copy()100%210%

File(s)

/home/runner/work/Utility-Blazor/Utility-Blazor/src/Utility/Components/SQLInput/SQLInput.razor

#LineLine coverage
 1@inject IJSRuntime JSRuntime
 2
 3<div class="container">
 4    <label class="label-control">Field:</label>
 5    <div class="input-group">
 6        <input type="text" id="field" name="field" class="form-control" @bind="Field">@*placeholder="i.[Guid]"*@
 7        <span class="input-group-btn">
 8            <button class="btn btn-info" type="button" id="btnFieldCopy" name="btnFieldCopy" @onclick="CopyField"><i cla
 9            <button class="btn btn-danger" type="button" id="btnFieldClear" name="btnFieldClear" @onclick="ClearField"><
 10        </span>
 11    </div>
 12    <div class="row">
 13        <div class="col">
 14            <div class="input-group">
 15                <textarea id="sqlBuilderInput" name="sqlBuilderInput" class="form-control" rows="5" @bind="Input"></text
 16                <span class="input-group-btn">
 17                    <button id="btnClearSQLBuilder" name="btnClearSQLBuilder" class="btn btn-danger" @onclick="Clear"><i
 18                </span>
 19            </div>
 20
 21        </div>
 22    </div>
 23    <div class="row">
 24        <div class="col">
 25            <button class="btn btn-success" type="button" id="btnParse" name="btnParse" @onclick="Parse">Parse</button>
 26        </div>
 27    </div>
 28    <div class="row">
 29        <div class="col">
 30            <div class="input-group">
 31                <textarea id="sqlBuilderOutput" name="sqlBuilderOutput" class="form-control" rows="5" @bind="Output"></t
 32                <span class="input-group-btn">
 33                    <button id="btnCopySQLBuilder" name="btnCopySQLBuilder" class="btn btn-info" @onclick="Copy"><i clas
 34                </span>
 35            </div>
 36
 37        </div>
 38    </div>
 39</div>
 40
 41@code {
 42
 043    string Field = string.Empty;
 044    string Input = string.Empty;
 045    string Output = string.Empty;
 046    string wildcard = "%";
 47
 48    async Task CopyField()
 049    {
 050        await JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", Field);
 051    }
 52
 53    private void ClearField()
 054    {
 055        Field = string.Empty;
 056    }
 57
 58    private void Clear()
 059    {
 060        Input = string.Empty;
 061    }
 62
 63    private void Parse()
 064    {
 065        var items = Input.Split(new[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
 066        var likeItems = string.Join(" OR ", items.Select(i => $"{Field} LIKE {wildcard}{i.Trim()}{wildcard}"));
 67
 068        Output = likeItems;
 069    }
 70
 71    async Task Copy()
 072    {
 073        await JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", Output);
 074    }
 75}