make use of skipTotal
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
|
||||
const dispatch = createEventDispatcher();
|
||||
const uniqueId = "picker_" + CommonHelper.randomString(5);
|
||||
const batchSize = 100;
|
||||
const batchSize = 50;
|
||||
|
||||
export let value;
|
||||
export let field;
|
||||
@@ -24,7 +24,7 @@
|
||||
let list = [];
|
||||
let selected = [];
|
||||
let currentPage = 1;
|
||||
let totalItems = 0;
|
||||
let lastItemsCount = 0;
|
||||
let isLoadingList = false;
|
||||
let isLoadingSelected = false;
|
||||
|
||||
@@ -36,13 +36,13 @@
|
||||
|
||||
$: collection = $collections.find((c) => c.id == collectionId) || null;
|
||||
|
||||
$: if (typeof filter !== "undefined" && !isLoadingSelected && pickerPanel?.isActive()) {
|
||||
loadList(true); // reset list on filter or list change
|
||||
$: if (typeof filter !== "undefined" && pickerPanel?.isActive()) {
|
||||
loadList(true); // reset list on filter change
|
||||
}
|
||||
|
||||
$: isLoading = isLoadingList || isLoadingSelected;
|
||||
|
||||
$: canLoadMore = totalItems > list.length;
|
||||
$: canLoadMore = lastItemsCount == batchSize;
|
||||
|
||||
$: canSelectMore = maxSelect === null || maxSelect > selected.length;
|
||||
|
||||
@@ -106,11 +106,14 @@
|
||||
// add the selected models to the list (if not already)
|
||||
list = CommonHelper.filterDuplicatesByKey(selected.concat(list));
|
||||
}
|
||||
} catch (err) {
|
||||
ApiClient.error(err);
|
||||
}
|
||||
|
||||
isLoadingSelected = false;
|
||||
isLoadingSelected = false;
|
||||
} catch (err) {
|
||||
if (!err.isAbort) {
|
||||
ApiClient.error(err);
|
||||
isLoadingSelected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function loadList(reset = false) {
|
||||
@@ -137,17 +140,21 @@
|
||||
const result = await ApiClient.collection(collectionId).getList(page, batchSize, {
|
||||
filter: CommonHelper.normalizeSearchFilter(filter, fallbackSearchFields),
|
||||
sort: !collection?.$isView ? "-created" : "",
|
||||
skipTotal: 1,
|
||||
$cancelKey: uniqueId + "loadList",
|
||||
});
|
||||
|
||||
list = CommonHelper.filterDuplicatesByKey(list.concat(result.items));
|
||||
currentPage = result.page;
|
||||
totalItems = result.totalItems;
|
||||
} catch (err) {
|
||||
ApiClient.error(err);
|
||||
}
|
||||
lastItemsCount = result.items.length;
|
||||
|
||||
isLoadingList = false;
|
||||
isLoadingList = false;
|
||||
} catch (err) {
|
||||
if (!err.isAbort) {
|
||||
ApiClient.error(err);
|
||||
isLoadingList = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$: isSelected = function (record) {
|
||||
@@ -260,21 +267,25 @@
|
||||
{/if}
|
||||
</div>
|
||||
{:else}
|
||||
<div class="list-item">
|
||||
{#if isLoading}
|
||||
<div class="block txt-center">
|
||||
<span class="loader loader-sm active" />
|
||||
</div>
|
||||
{:else}
|
||||
{#if !isLoading}
|
||||
<div class="list-item">
|
||||
<span class="txt txt-hint">No records found.</span>
|
||||
{#if filter?.length}
|
||||
<button type="button" class="btn btn-hint btn-sm" on:click={() => (filter = "")}>
|
||||
<span class="txt">Clear filters</span>
|
||||
</button>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/each}
|
||||
|
||||
{#if isLoading}
|
||||
<div class="list-item">
|
||||
<div class="block txt-center">
|
||||
<span class="loader loader-sm active" />
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<h5 class="section-title">
|
||||
|
||||
Reference in New Issue
Block a user