|
323 | 323 | } |
324 | 324 |
|
325 | 325 | filters.page = self.page |
326 | | - filters.page_size = self.page_size |
| 326 | + if (String(self.page_size).toLowerCase() === 'all') { |
| 327 | + filters.page_size = 'all' |
| 328 | + } else { |
| 329 | + filters.page_size = self.page_size |
| 330 | + } |
327 | 331 |
|
328 | 332 | CODALAB.api.get_submissions(filters) |
329 | 333 | .done(function (response) { |
|
334 | 338 | self.next = response.next || null |
335 | 339 | self.previous = response.previous || null |
336 | 340 | self.total_count = response.count || 0 |
| 341 | + |
| 342 | + var effectivePageSize = 1 |
| 343 | + var serverPageSize = undefined |
| 344 | + var totalCount = (typeof response.count === 'number') ? response.count : self.total_count |
| 345 | + var isLastPage = (response.next === null) |
| 346 | + |
337 | 347 | if (response && typeof response.page_size !== 'undefined') { |
338 | | - const rsp = String(response.page_size).toLowerCase() |
339 | | - if (rsp === 'all') { |
| 348 | + serverPageSize = response.page_size |
| 349 | + } |
| 350 | + |
| 351 | + if (typeof serverPageSize !== 'undefined') { |
| 352 | + if (String(serverPageSize).toLowerCase() === 'all') { |
340 | 353 | self.page_size = 'all' |
341 | 354 | } else { |
342 | | - const n = Number(response.page_size) |
343 | | - self.page_size = isNaN(n) ? self.page_size : n |
| 355 | + var parsedServerPS = Number(serverPageSize) |
| 356 | + if (!isNaN(parsedServerPS) && parsedServerPS > 0) { |
| 357 | + self.page_size = parsedServerPS |
| 358 | + } |
344 | 359 | } |
345 | 360 | } |
346 | 361 |
|
347 | 362 | if (String(self.page_size).toLowerCase() === 'all') { |
| 363 | + if (typeof response.page_size_numeric === 'number' && response.page_size_numeric > 0) { |
| 364 | + effectivePageSize = response.page_size_numeric |
| 365 | + } else if (typeof response.effective_page_size === 'number' && response.effective_page_size > 0) { |
| 366 | + effectivePageSize = response.effective_page_size |
| 367 | + } else { |
| 368 | + if (!isLastPage && Array.isArray(results) && results.length > 0) { |
| 369 | + effectivePageSize = results.length |
| 370 | + } else if (isLastPage && self.page > 1 && typeof totalCount === 'number' && totalCount > 0) { |
| 371 | + var itemsOnLastPage = Array.isArray(results) ? results.length : 0 |
| 372 | + var pagesBefore = self.page - 1 |
| 373 | + var calc = Math.floor((totalCount - itemsOnLastPage) / pagesBefore) |
| 374 | + if (calc > 0) { |
| 375 | + effectivePageSize = calc |
| 376 | + } else { |
| 377 | + effectivePageSize = 50 |
| 378 | + } |
| 379 | + } else if (Array.isArray(results) && results.length > 0) { |
| 380 | + effectivePageSize = results.length |
| 381 | + } else { |
| 382 | + effectivePageSize = 50 |
| 383 | + } |
| 384 | + } |
| 385 | + } else if (typeof self.page_size === 'number' && self.page_size > 0) { |
| 386 | + effectivePageSize = self.page_size |
| 387 | + } else { |
| 388 | + effectivePageSize = 50 |
| 389 | + } |
| 390 | + |
| 391 | + if (typeof totalCount !== 'number' || totalCount < 0) { |
348 | 392 | self.total_pages = 1 |
349 | 393 | } else { |
350 | | - const ps = Number(self.page_size) || 1 |
351 | | - self.total_pages = Math.max(1, Math.ceil(self.total_count / ps)) |
| 394 | + self.total_pages = Math.max(1, Math.ceil(totalCount / effectivePageSize)) |
352 | 395 | } |
353 | 396 | } else { |
354 | 397 | results = response || [] |
|
640 | 683 | // Set checkboxes to be equal to Select_All checkbox |
641 | 684 | check_boxes.prop('checked', check_boxes.first().is(':checked')) |
642 | 685 |
|
643 | | - |
644 | 686 | let inputs = $(self.refs.submission_table).find('input') |
645 | 687 | let checked_boxes = inputs.not(':first').filter('input:checked') |
646 | 688 | self.checked_submissions = checked_boxes.serializeArray().map((x) => { return x.name }) |
647 | 689 | } |
648 | 690 |
|
649 | | - |
650 | | - |
651 | | - |
652 | | - |
653 | 691 | self.submission_clicked = function (submission) { |
654 | 692 | // stupid workaround to not modify the original submission object |
655 | 693 | submission = _.defaultsDeep({}, submission) |
|
0 commit comments