Wiedereintritt wieder moeglich, und die Panels lesen die Akte neu
Zwei Befunde aus dem Test vom 29.09., beide Klasse A. K.01 -- rehire_employee scheitert bei jedem Aufruf: der case-Ausdruck fuer den Status liefert text, die Spalte ist ein Aufzaehlungstyp. Genau das wurde am 10.08. schon einmal behoben. Vier spaetere Migrationen haben die Funktion neu erzeugt und den Zusatz nicht mitgenommen -- zwei davon aus einer aelteren Datei, zwei aus der laufenden Definition. Daraus die Lehre, die vorher nicht dastand: aus dem laufenden Stand zu erzeugen schuetzt davor, Verhalten zu verlieren, nicht davor, einen bereits vorhandenen Fehler mitzunehmen. Die Selbstpruefung benennt deshalb jetzt das Erwartete und nicht nur das Neue. H.05 -- "Daten aendern" schrieb veraltete Werte zurueck. Die Panels bleiben eingebunden, damit ihr Ein- und Ausfahren laufen kann, belegen ihre Felder aber mit useState(employee.…) vor -- und das laeuft nur beim ersten Aufbau. Nach einer Befoerderung brachte router.refresh() die frische Akte herein, der Zustand im Panel blieb der von vorhin, und beim naechsten Speichern ging er als Ganzes an change_employee_data: der eben gesetzte Hay-Grade stand wieder auf dem alten Wert. Jedes Panel bekommt jetzt einen key aus employees.updated_at, der sich bei jeder Aenderung an der Zeile bewegt und sonst nie. Der Wiedereintritts-Assistent daneben macht es seit jeher so.
This commit is contained in:
@@ -217,20 +217,44 @@ export function EmployeeDetail(props: EmployeeDetailProps) {
|
||||
{tab === "HR-Notizen" && <NotizenTab employeeId={employee.id} notes={notes} />}
|
||||
</div>
|
||||
|
||||
{/* Der `key` an jedem Panel ist kein Feinschliff, sondern der Unterschied
|
||||
zwischen „zeigt Altes" und „schreibt Altes zurück".
|
||||
|
||||
Die Panels bleiben eingebunden, damit ihr Ein- und Ausfahren laufen
|
||||
kann. Sie belegen ihre Felder aber mit useState(employee.…) vor, und
|
||||
das läuft nur beim ersten Aufbau. Nach einer Beförderung bringt
|
||||
router.refresh() zwar die frische Akte herein — der Zustand im Panel
|
||||
bleibt der von vorhin. Beim nächsten Speichern geht er als Ganzes an
|
||||
change_employee_data, und der eben gesetzte Hay-Grade steht wieder
|
||||
auf dem alten Wert. Gemeldet im Test vom 29.09. (H.05).
|
||||
|
||||
employees.updated_at wechselt bei jeder Änderung an der Zeile
|
||||
(Trigger trg_employees_touch_updated_at), also genau dann, wenn die
|
||||
Vorbelegung neu zu lesen ist — und sonst nie. Der Wiedereintritts-
|
||||
Assistent darunter macht es seit jeher so. */}
|
||||
<TransferPanel
|
||||
key={`transfer-${employee.updated_at}`}
|
||||
open={panel === "transfer"}
|
||||
onClose={() => setPanel(null)}
|
||||
employee={employee}
|
||||
openPositions={openPositions}
|
||||
/>
|
||||
<PromotePanel
|
||||
key={`promote-${employee.updated_at}`}
|
||||
open={panel === "promote"}
|
||||
onClose={() => setPanel(null)}
|
||||
employee={employee}
|
||||
openPositions={openPositions}
|
||||
/>
|
||||
<KarenzPanel open={panel === "karenz"} onClose={() => setPanel(null)} employee={employee} status={status} />
|
||||
<KarenzPanel
|
||||
key={`karenz-${employee.updated_at}`}
|
||||
open={panel === "karenz"}
|
||||
onClose={() => setPanel(null)}
|
||||
employee={employee}
|
||||
status={status}
|
||||
/>
|
||||
<DatenAendernPanel
|
||||
key={`daten-${employee.updated_at}`}
|
||||
open={panel === "daten"}
|
||||
onClose={() => setPanel(null)}
|
||||
employee={employee}
|
||||
@@ -238,6 +262,7 @@ export function EmployeeDetail(props: EmployeeDetailProps) {
|
||||
locationCountry={location?.country}
|
||||
/>
|
||||
<TerminatePanel
|
||||
key={`terminate-${employee.updated_at}`}
|
||||
open={panel === "terminate"}
|
||||
onClose={() => setPanel(null)}
|
||||
employee={employee}
|
||||
|
||||
Reference in New Issue
Block a user