DeliveryNote: Fix forced page break

This commit is contained in:
2023-09-03 01:21:46 +02:00
parent 3a0736a73f
commit 545622a2ab

View File

@ -6,31 +6,32 @@
<div class="date">@Model.Location, am @($"{Model.Date:dd.MM.yyyy}")</div>
<h1>@Model.Title</h1>
@{
var sortids = Model.Delivery.Parts.Select(p => p.SortId).ToList();
bool displayStats = true; // Model.Delivery.Year == Model.CurrentNextSeason
int xLines = Model.Delivery.Parts.Count() * 5 + Model.Delivery.Parts.Select(p => p.Modifiers.Count() + (p.Comment != null ? 1 : 0) + (p.Acid != null || p.Temperature != null ? 1 : 0)).Sum();
if (Model.Delivery.Comment != null) xLines += 2;
if (displayStats) xLines += 2 + Model.MemberBuckets.Select(b => b.Item3 > 0 && b.Item4 > 0 && sortids.Contains(b.Item1[..2]) ? 1 : 0).Sum();
int sLines = Model.Text != null ? (Model.Text.Length + 110 - 1) / 110 : 0;
xLines += sLines + (sLines + 1) / 2;
bool forcePageBreak = xLines > 30;
}
@if (forcePageBreak) {
<script>
document.addEventListener("DOMContentLoaded", () => {
<script>
document.addEventListener("DOMContentLoaded", () => {
const hidden = document.getElementsByClassName("hidden")[0];
const bottom = hidden.offsetTop + hidden.offsetHeight;
const cm = bottom * 2.54 / 96 * window.devicePixelRatio;
if (cm > 25.75) {
// force page break
const table = document.getElementsByClassName("delivery")[0];
const hr = document.createElement("hr");
hr.classList.add("page-break");
table.before(hr);
const stats = document.getElementById("delivery-stats");
if (!stats) return;
document.getElementsByClassName("page-break")[0].before(stats);
stats.getElementsByTagName("table")[0].classList.add("expanded");
});
</script>
<p>Siehe nächste Seite.</p>
// JS delivery-stats
<hr class="page-break"/>
}
hr.before(stats);
const p = document.createElement("p");
p.innerText = "Siehe nächste Seite."
stats.before(p);
}
});
</script>
<table class="delivery">
<colgroup>
<col style="width: 1cm;"/>
@ -133,6 +134,7 @@
$"<td>{(sum > right ? $"{sum - right:N0}" : "-")}</td>" +
$"<td>{sum:N0}</td>";
}
var sortids = Model.Delivery.Parts.Select(p => p.SortId).ToList();
}
<tr>
<th>Geschäftsanteile</th>