|
1 | 1 | // Constants and Variables |
2 | 2 | const minDataPointsForBoxPlot = 2; |
3 | 3 | const validYoeBucket = new Set(["Entry (0-1)", "Mid (2-6)", "Senior (7-10)", "Senior + (11+)"]); |
4 | | -const offersPerPage = 10; |
| 4 | +let offersPerPage = 10; |
| 5 | +let pageSize = 10; |
5 | 6 | let currentPage = 1; |
6 | 7 | let offers = []; |
7 | 8 | let filteredOffers = []; |
@@ -330,6 +331,23 @@ function sortOffers(column) { |
330 | 331 | displayOffers(currentPage); |
331 | 332 | } |
332 | 333 |
|
| 334 | +function computeTotalPages() { |
| 335 | + const pageSizeSelect = document.getElementById('pageSizeSelect'); |
| 336 | + const selected = pageSizeSelect ? pageSizeSelect.value : String(pageSize); |
| 337 | + if (selected === 'all') { |
| 338 | + pageSize = 'all'; |
| 339 | + offersPerPage = filteredOffers.length || 1; |
| 340 | + totalPages = 1; |
| 341 | + currentPage = 1; |
| 342 | + } else { |
| 343 | + pageSize = parseInt(selected); |
| 344 | + offersPerPage = pageSize; |
| 345 | + totalPages = Math.ceil(filteredOffers.length / offersPerPage) || 1; |
| 346 | + if (currentPage > totalPages) currentPage = totalPages; |
| 347 | + if (currentPage < 1) currentPage = 1; |
| 348 | + } |
| 349 | +} |
| 350 | + |
333 | 351 | function renderPageOptions() { |
334 | 352 | const pageSelect = document.getElementById('pageSelect'); |
335 | 353 | pageSelect.innerHTML = ''; |
@@ -377,7 +395,7 @@ document.addEventListener('DOMContentLoaded', async function () { |
377 | 395 | const data = await response.json(); |
378 | 396 | offers = data; |
379 | 397 | filteredOffers = [...offers]; |
380 | | - totalPages = Math.ceil(filteredOffers.length / offersPerPage); |
| 398 | + computeTotalPages(); |
381 | 399 | displayOffers(currentPage); |
382 | 400 | } |
383 | 401 |
|
@@ -410,6 +428,12 @@ document.addEventListener('DOMContentLoaded', async function () { |
410 | 428 | currentPage = parseInt(event.target.value); |
411 | 429 | displayOffers(currentPage); |
412 | 430 | }); |
| 431 | + |
| 432 | + // Page size dropdown event listener |
| 433 | + document.getElementById('pageSizeSelect').addEventListener('change', () => { |
| 434 | + computeTotalPages(); |
| 435 | + displayOffers(currentPage); |
| 436 | + }); |
413 | 437 | function filterOffers() { |
414 | 438 | currentSort = { column: null, order: 'asc' }; |
415 | 439 |
|
@@ -439,8 +463,7 @@ document.addEventListener('DOMContentLoaded', async function () { |
439 | 463 | } |
440 | 464 |
|
441 | 465 | filteredOffers = tempFilteredOffers; |
442 | | - totalPages = Math.ceil(filteredOffers.length / offersPerPage); |
443 | | - currentPage = 1; |
| 466 | + computeTotalPages(); |
444 | 467 |
|
445 | 468 | // Update UI elements |
446 | 469 | setStatsStr(filteredOffers); |
|
0 commit comments