import type { Pruefungsverlauf } from '../../../../shared/pruefung';
import { laufVergleichen, type Laufkennzahlen } from '../../../../shared/verlaufsvergleich';
import { zeitpunktText } from '../../pruefung/zeit';

export interface LaufvergleichProps {
  readonly aktuell: Laufkennzahlen;
  readonly verlauf: readonly Pruefungsverlauf[];
}

/**
 * Wie dieser Lauf gegenüber dem letzten vergleichbaren dasteht.
 *
 * Der Satz kommt fertig aus `shared/verlaufsvergleich.ts`; hier wird nichts
 * nachformuliert. Nur das Datumsformat gehört der Oberfläche und wird
 * hereingereicht.
 *
 * Gibt es keinen vergleichbaren Lauf – anderes Profil, andere Zeitstufe, oder
 * es ist der erste –, steht hier **nichts**. Ein „noch kein Vergleich
 * möglich“ wäre eine Zeile, die niemandem hilft und die Auswertung nur
 * verlängert; die Verlaufstabelle darunter sagt ohnehin, dass es der erste
 * Lauf war.
 */
export function Laufvergleich({ aktuell, verlauf }: LaufvergleichProps): React.JSX.Element | null {
  const vergleich = laufVergleichen(aktuell, verlauf, zeitpunktText);
  if (vergleich === null) {
    return null;
  }

  return (
    <div className="laufvergleich">
      <p className="laufvergleich__satz">{vergleich.satz}</p>
      {vergleich.vorbehalte.length > 0 ? (
        /* Als Liste und nicht als Fließtext: Es sind eigenständige
           Einschränkungen, und wer nur eine davon braucht, findet sie so. */
        <ul className="laufvergleich__vorbehalte">
          {vergleich.vorbehalte.map((satz) => (
            <li key={satz}>{satz}</li>
          ))}
        </ul>
      ) : null}
    </div>
  );
}
