Rechtliches: Abloesung am selben Tag, Kartenraster auf schmalen Bildschirmen

Bei zwei gueltigen Versionen mit gleichem Beginn gilt die zuletzt angelegte;
eine am selben Tag abgeloeste Version endet nie vor ihrem Beginn.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-09-30 10:24:18 +00:00
1 parent 67b9439145
commit c7c1e338a3
4 files changed
+28 -5

No files matched your search

@@ -15,7 +15,7 @@ function costLabel(c) {
function termLabel(c) {
if (c.termMonths === null || c.termMonths === undefined) return '–'
if (c.termMonths === 0) return 'jederzeit kündbar'
const renew = c.renewalMonths ? `, verlängert um ${c.renewalMonths}` : ', endet danach'
const renew = c.renewalMonths ? `, dann je ${c.renewalMonths} Monate` : ', endet danach'
return `${c.termMonths} Monate${renew}`
}
+14 -3
View File
@@ -81,11 +81,22 @@ export function deadlineTone(result, today) {
return 'normal'
}
/** Aktuell gueltige Version; bei mehreren (z. B. halb gescheiterte Abloesung) die juengste. */
// Tag vor dem neuen Beginn, aber nie vor dem eigenen Beginn (Abloesung am selben Tag).
function dayBeforeOrSame(nextFrom, ownFrom) {
const before = addDays(nextFrom, -1)
return ownFrom && before < ownFrom ? ownFrom : before
}
const newness = (v) => `${v.validFrom || ''}|${v.$createdAt || ''}`
/**
* Aktuell gueltige Version; bei mehreren (z. B. halb gescheiterte Abloesung) die mit dem
* juengsten validFrom, bei gleichem Datum die zuletzt angelegte.
*/
export function currentVersion(versions) {
return versions
.filter((v) => v.status === 'current')
.reduce((best, v) => (!best || v.validFrom > best.validFrom ? v : best), null)
.reduce((best, v) => (!best || newness(v) > newness(best) ? v : best), null)
}
/**
@@ -103,7 +114,7 @@ export function planNewVersion(versions, input) {
const current = currentVersion(siblings)
if (!current || input.validFrom >= current.validFrom) {
const updates = current
? [{ id: current.$id, patch: { status: 'superseded', validTo: addDays(input.validFrom, -1) } }]
? [{ id: current.$id, patch: { status: 'superseded', validTo: dayBeforeOrSame(input.validFrom, current.validFrom) } }]
: []
return { create: { ...input, validTo: null }, updates }
}
+1 -1
View File
@@ -1110,7 +1110,7 @@ textarea.form-control {
}
/* --- Rechtliches --- */
.legal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: var(--sp-4); align-items: start; margin-top: var(--sp-4); }
.legal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(360px, 100%), 1fr)); gap: var(--sp-4); align-items: start; margin-top: var(--sp-4); }
.legal-grid > .legal-error { grid-column: 1 / -1; }
.legal-doc-summary { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; cursor: pointer; }
.legal-toggle { margin-left: auto; font-size: 13px; }