github.com/grafana/pyroscope@v1.18.0/pkg/operations/v2/tool.pagination.gohtml (about)

     1  {{/*
     2      Required parameters (pass via dict):
     3      - BaseURL: string - the base URL without query params (e.g., "?dataset=foo&shard=1")
     4      - Page: int - current page number
     5      - PageSize: int - items per page
     6      - TotalPages: int - total number of pages
     7      - HasPrevPage: bool - whether there's a previous page
     8      - HasNextPage: bool - whether there's a next page
     9  */}}
    10  
    11  {{ define "pagination" }}
    12      {{ $baseURL := .BaseURL }}
    13      {{ $currentPage := .Page }}
    14      {{ $pageSize := .PageSize }}
    15      {{ $totalPages := .TotalPages }}
    16      {{ $hasPrev := .HasPrevPage }}
    17      {{ $hasNext := .HasNextPage }}
    18  
    19      <nav aria-label="Pagination">
    20          <ul class="pagination justify-content-center">
    21              <li class="page-item {{ if not $hasPrev }}disabled{{ end }}">
    22                  <a class="page-link" href="{{ $baseURL }}&page=1&page_size={{ $pageSize }}">First</a>
    23              </li>
    24              <li class="page-item {{ if not $hasPrev }}disabled{{ end }}">
    25                  <a class="page-link" href="{{ $baseURL }}&page={{ add $currentPage -1 }}&page_size={{ $pageSize }}">Previous</a>
    26              </li>
    27  
    28              {{ $startPage := add $currentPage -2 }}
    29              {{ if lt $startPage 1 }}{{ $startPage = 1 }}{{ end }}
    30              {{ $endPage := add $currentPage 2 }}
    31              {{ if gt $endPage $totalPages }}{{ $endPage = $totalPages }}{{ end }}
    32  
    33              {{ if gt $startPage 1 }}
    34                  <li class="page-item disabled"><span class="page-link">...</span></li>
    35              {{ end }}
    36  
    37              {{ range $page := seq $startPage $endPage }}
    38                  <li class="page-item {{ if eq $page $currentPage }}active{{ end }}">
    39                      <a class="page-link" href="{{ $baseURL }}&page={{ $page }}&page_size={{ $pageSize }}">{{ $page }}</a>
    40                  </li>
    41              {{ end }}
    42  
    43              {{ if lt $endPage $totalPages }}
    44                  <li class="page-item disabled"><span class="page-link">...</span></li>
    45              {{ end }}
    46  
    47              <li class="page-item {{ if not $hasNext }}disabled{{ end }}">
    48                  <a class="page-link" href="{{ $baseURL }}&page={{ add $currentPage 1 }}&page_size={{ $pageSize }}">Next</a>
    49              </li>
    50              <li class="page-item {{ if not $hasNext }}disabled{{ end }}">
    51                  <a class="page-link" href="{{ $baseURL }}&page={{ $totalPages }}&page_size={{ $pageSize }}">Last</a>
    52              </li>
    53          </ul>
    54      </nav>
    55  {{ end }}