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:
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
@@ -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 }
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
|
||||
Reference in new issue
Block a user