< Summary

Information
Class: Utility.Components.SQLInClause.SQLInClause
Assembly: Utility
File(s): /home/runner/work/Utility-Blazor/Utility-Blazor/src/Utility/Components/SQLInClause/SQLInClause.razor
Tag: 231_14069517506
Line coverage
0%
Covered lines: 0
Uncovered lines: 22
Coverable lines: 22
Total lines: 82
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

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

File(s)

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

#LineLine coverage
 1@inject IJSRuntime JSRuntime
 2
 3<div class="container">
 4    <div class="row">
 5        <div class="col">
 6            <div class="input-group">
 7                <textarea id="sqlBuilderInput" name="sqlBuilderInput" class="form-control" rows="5" @bind="Input"></text
 8                <span class="input-group-btn">
 9                    <button id="btnClearSQLBuilder" name="btnClearSQLBuilder" class="btn btn-danger float-right" @onclic
 10                </span>
 11            </div>
 12        </div>
 13    </div>
 14    <div class="row">
 15        <div class="col">
 16            <label class="label-control">Wrapper:</label>
 17            <div class="input-group">
 18                <select id="wrapper" name="wrapper" class="form-control" @bind="Wrapper">
 19                    <option value=""></option>
 20                    <option value="'">'</option>
 21                </select>
 22                <span class="input-group-btn">
 23                    <button class="btn btn-success" type="button" id="btnParse" name="btnParse" @onclick="Parse">Parse</
 24                </span>
 25            </div>
 26        </div>
 27    </div>
 28    <div class="row">
 29        <div class="col">
 30            <div class="form-check">
 31                <input class="form-check-input" type="checkbox" id="chkRemoveDuplicates" @bind-value="RemoveDuplicates" 
 32                <label class="form-check-label" for="chkRemoveDuplicates">
 33                    Remove Duplicates
 34                </label>
 35            </div>
 36        </div>
 37    </div>
 38    <div class="row">
 39        <div class="col">
 40            <div class="input-group">
 41                <textarea id="sqlBuilderOutput" name="sqlBuilderOutput" class="form-control" rows="5" @bind="Output"></t
 42                <span class="input-group-btn">
 43                    <button id="btnCopySQLBuilder" name="btnCopySQLBuilder" class="btn btn-info float-right" @onclick="C
 44                </span>
 45            </div>
 46
 47        </div>
 48    </div>
 49</div>
 50
 51@code {
 052    string Input = string.Empty;
 053    string Output = string.Empty;
 054    bool RemoveDuplicates = false;
 055    string Wrapper = "";
 56
 57    private void Clear()
 058    {
 059        Input = string.Empty;
 060    }
 61
 62
 63    private void Parse()
 064    {
 065        if (Input.Length == 0) return;
 66
 067        Output = string.Empty;
 068        var items = Input.Split().Where(x => x != string.Empty);
 069        if (RemoveDuplicates) items = items.Distinct();
 070        foreach (var item in items)
 071        {
 072            Output += $"{Wrapper}{item}{Wrapper},";
 073        }
 074        Output = Output.Remove(Output.Length - 1, 1);
 075        Output = "IN (" + Output + ")";
 076    }
 77
 78    async Task Copy()
 079    {
 080        await JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", Output);
 081    }
 82}

Methods/Properties

.ctor()
Clear()
Parse()
Copy()