PlotDirector/PlotLine/Views/Shared/_ManuscriptTextBalance.cshtml

49 lines
1.5 KiB
Plaintext

@model PlotLine.Models.ManuscriptTextStatistics
@{
var dialoguePercent = Math.Clamp(Model.DialoguePercentage, 0m, 100m);
var balanceLabel = BalanceLabel(dialoguePercent);
}
<div class="manuscript-balance" aria-label="Dialogue and prose balance">
<div class="manuscript-balance__heading">
<span>@balanceLabel</span>
<strong>@dialoguePercent.ToString("0.#")% dialogue</strong>
</div>
<div class="manuscript-balance__scale" aria-hidden="true">
<span>Prose-heavy</span>
<div class="manuscript-balance__track">
<i style="left: @dialoguePercent.ToString("0.#")%"></i>
</div>
<span>Dialogue-heavy</span>
</div>
<p>
@Model.TotalWordCount.ToString("N0") words · @Model.DialogueWordCount.ToString("N0") dialogue · @Model.ProseWordCount.ToString("N0") prose
@if (Model.TotalParagraphCount > 0)
{
<span> · @Model.TotalParagraphCount.ToString("N0") paragraphs · @Model.DialogueParagraphCount.ToString("N0") dialogue</span>
}
</p>
</div>
@functions {
private static string BalanceLabel(decimal dialoguePercent)
{
if (dialoguePercent < 25m)
{
return "Very prose-heavy";
}
if (dialoguePercent < 45m)
{
return "Prose-heavy";
}
if (dialoguePercent <= 55m)
{
return "Balanced";
}
return dialoguePercent <= 75m ? "Dialogue-heavy" : "Very dialogue-heavy";
}
}