Passa al contenuto principale

Paginazione dei Risultati

Per gli endpoint dell'API che recuperano liste di risultati, il frontend deve gestire una paginazione al fine di evitare il recupero di tutto il set di risultati in una singola chiamata, che è limitato a massimo 100 elementi. Si ricorda che il connettore Javascript, per facilitare l'utilizzo di queste chiamate espone il metodo DiscoveryCms.getContents() e il corrispondente hook React useDiscoveryContents(). In entrambi i casi è possibile passa due parametri fondamentali per la paginazione:

  • start (default 0), che indica il primo contenuto della lista da recuperare, e
  • limit (default 10, max 100) che indica il numero di contenuti da recuperare con la chiamata.

L'oggetto restituito, oltre a contenere l'array con i risultati (entities), contiene anche una property resultCount. E' bene comprendere che resultCount indica il totale dei risultati per l'interrogazione, e non il numero di risultati restituiti (il cui numero corrisponde a limit).

Il resultCount può essere utilizzato dal frontend per gestire la paginazione per capire se l'elenco dei risultati è finito.

Generalmente esistono due modi per implementare la paginazione sul frontend:

  • endless scrolling
  • visualizzazione di un paginatore ([1][2]...)

Quale approccio utilizzare dipende da varie considerazioni di UX, esistono pro e contro per entrambi gli approcci. Questa guida non entra nel merito di aspetti di UX. Qualora si scelga la visualizzazione di un paginatore, il resultCount è utile per determinare il numero di pagine da visualizzare. Ad esempio, se si è deciso di avere pagine di 25 risultati (limit = 25) e il resultCount è 100, allora il paginatore deve visualizzare 4 pagine. Le pagine verranno recuperate come segue:

  • pagina 1: start=0, limit=25
  • pagina 2: start=25, limit=25
  • pagina 3: start=50, limit=25
  • pagina 4: start=75, limit=25

E' bene tener presente che limit è un limite massimo. Se il numero dei risultati fosse 90, l'ultima chiamata non andrebbe in errore e restituirebbe 15 risultati.