Hi!
ich habe meiner Meinung nach eine extrem kompliziert Problem.
Naja, so extrem ist es nun auch wieder nicht, denn Pager-Lösungen gibt es einige.
Im normal Zustand, gibt es links und rechts von der aktuelle 3 Seiten.
In den anderen beiden Zuständen, wird jeweils die fehlende Anzahl der anderen dazu addiert.
Also fehlen mir folgende Werte:
- erste Seite die angezeigt wird
- letzte Seite die angezeigt wird
die beiden Werte müssen sich dann aber anpassen so das immer (außer wenn es weniger als 7 Seiten gibt) 7 Seiten zur Auswahl stehen.
Du hast die aktuelle Seite, du kennst die Differenz zur ersten oder zur letzten. Wenn sie weniger als 3 ist, hast du einen Korrekturwert für die andere Seite. Das beste ist außerdem noch, wenn die erste Seite zumindest zum internen Rechnen die Nummer 0 bekommt, sonst musst du immer eine 1 hinzufügen oder abziehen.
max(0, 3 - n) ist die Anzahl der zusätzlichen Seiten auf der rechten Seite.
Proberechnungen:
3 - 0 = 3
3 - 1 = 2
3 - 2 = 1
3 - 3 = 0
3 - 4 = -1, aber max(0, -1) = 0
Bekommst du die Rechte Seite selbst hin? Zu beachten ist noch der Spezialfall wenn weniger als 7 Seiten existieren. Da müsstest du den max/min-Trick auch noch mal auf die Berechnung von 3 und dem Korrekturwert anwenden.
Lo!