49 lines
1.5 KiB
Plaintext
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";
|
|
}
|
|
}
|