< Summary

Information
Class: Chronicis.Client.Components.Articles.ArticleActionBar
Assembly: Chronicis.Client
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Client/Components/Articles/ArticleActionBar.razor
Line coverage
100%
Covered lines: 19
Uncovered lines: 0
Coverable lines: 19
Total lines: 148
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_IsSaving()100%11100%
get_IsAutoLinking()100%11100%
get_IsCreatingChild()100%11100%
get_HasUnsavedChanges()100%11100%
get_LastSaveTime()100%11100%
get_OnSave()100%11100%
get_OnDelete()100%11100%
get_OnAutoLink()100%11100%
get_OnCreateChild()100%11100%
OnSaveClick()100%11100%
OnDeleteClick()100%11100%
OnAutoLinkClick()100%11100%
OnCreateChildClick()100%11100%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Client/Components/Articles/ArticleActionBar.razor

#LineLine coverage
 1@* ArticleActionBar.razor - Action buttons and save status for article editing *@
 2
 3<div class="chronicis-flex-between mt-4">
 4    <SaveStatusIndicator IsSaving="IsSaving"
 5                         HasUnsavedChanges="HasUnsavedChanges"
 6                         LastSaveTime="@LastSaveTime" />
 7
 8    <div class="chronicis-flex" style="gap: 8px;">
 9        <MudButton
 10            Variant="Variant.Outlined"
 11            Color="Color.Primary"
 12            OnClick="OnCreateChildClick"
 13            Disabled="IsSaving || IsCreatingChild"
 14            StartIcon="@Icons.Material.Filled.PostAdd">
 2015            @if (IsCreatingChild)
 16            {
 17                <MudProgressCircular Size="Size.Small" Indeterminate="true" Class="mr-2" />
 18                <span>Creating...</span>
 19            }
 20            else
 21            {
 22                <span>New Child</span>
 23            }
 24        </MudButton>
 25
 26        <MudButton
 27            Variant="Variant.Outlined"
 28            Color="Color.Primary"
 29            OnClick="OnAutoLinkClick"
 30            Disabled="IsSaving || IsAutoLinking"
 31            StartIcon="@Icons.Material.Filled.AutoFixHigh">
 2032            @if (IsAutoLinking)
 33            {
 34                <MudProgressCircular Size="Size.Small" Indeterminate="true" Class="mr-2" />
 35                <span>Scanning...</span>
 36            }
 37            else
 38            {
 39                <span>Auto-AiLink</span>
 40            }
 41        </MudButton>
 42
 43        <MudButton
 44            Variant="Variant.Filled"
 45            Color="Color.Success"
 46            OnClick="OnSaveClick"
 47            Disabled="IsSaving"
 48            StartIcon="@Icons.Material.Filled.Save">
 49            Save
 50        </MudButton>
 51
 52        <MudButton
 53            Variant="Variant.Filled"
 54            Color="Color.Error"
 55            OnClick="OnDeleteClick"
 56            StartIcon="@Icons.Material.Filled.Delete">
 57            Delete
 58        </MudButton>
 59    </div>
 60</div>
 61
 62@code {
 63    #region Status Parameters
 64
 65    /// <summary>
 66    /// Whether a save operation is in progress.
 67    /// </summary>
 68    [Parameter]
 8369    public bool IsSaving { get; set; }
 70
 71    /// <summary>
 72    /// Whether the auto-link operation is in progress.
 73    /// </summary>
 74    [Parameter]
 3975    public bool IsAutoLinking { get; set; }
 76
 77    /// <summary>
 78    /// Whether a child article is being created.
 79    /// </summary>
 80    [Parameter]
 3981    public bool IsCreatingChild { get; set; }
 82
 83    /// <summary>
 84    /// Whether there are unsaved changes.
 85    /// </summary>
 86    [Parameter]
 2187    public bool HasUnsavedChanges { get; set; }
 88
 89    /// <summary>
 90    /// Display text for last save time (e.g., "just now").
 91    /// </summary>
 92    [Parameter]
 2193    public string? LastSaveTime { get; set; }
 94
 95    #endregion
 96
 97    #region Event Callbacks
 98
 99    /// <summary>
 100    /// Raised when the Save button is clicked.
 101    /// </summary>
 102    [Parameter]
 2103    public EventCallback OnSave { get; set; }
 104
 105    /// <summary>
 106    /// Raised when the Delete button is clicked.
 107    /// </summary>
 108    [Parameter]
 2109    public EventCallback OnDelete { get; set; }
 110
 111    /// <summary>
 112    /// Raised when the Auto-Link button is clicked.
 113    /// </summary>
 114    [Parameter]
 2115    public EventCallback OnAutoLink { get; set; }
 116
 117    /// <summary>
 118    /// Raised when the New Child button is clicked.
 119    /// </summary>
 120    [Parameter]
 2121    public EventCallback OnCreateChild { get; set; }
 122
 123    #endregion
 124
 125    #region Event Handlers
 126
 127    private async Task OnSaveClick()
 128    {
 1129        await OnSave.InvokeAsync();
 1130    }
 131
 132    private async Task OnDeleteClick()
 133    {
 1134        await OnDelete.InvokeAsync();
 1135    }
 136
 137    private async Task OnAutoLinkClick()
 138    {
 1139        await OnAutoLink.InvokeAsync();
 1140    }
 141
 142    private async Task OnCreateChildClick()
 143    {
 1144        await OnCreateChild.InvokeAsync();
 1145    }
 146
 147    #endregion
 148}