From 631584bed18fb2273976fd462e5e3229728fd352 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Sat, 6 Jun 2026 15:41:18 +0800 Subject: [PATCH] fix(mongo): align table grid controls --- apps/desktop/src/components/grid/DataGrid.vue | 24 +- .../src/components/mongo/MongoDocBrowser.vue | 751 ++++++++++++++++-- 2 files changed, 721 insertions(+), 54 deletions(-) diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index 111e03bfe..8a8fe4d74 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -1835,7 +1835,9 @@ const canGoNextPage = computed(() => { totalRowCount: hasKnownTotalRowCount.value ? displayedTotalRowCount.value : undefined, }); }); -const canJumpLastPage = computed(() => canGoNextPage.value && (!!props.tableMeta || !!props.countSql)); +const canJumpLastPage = computed( + () => canGoNextPage.value && (hasKnownTotalRowCount.value || !!props.tableMeta || !!props.countSql), +); const totalRowCountBusy = computed(() => props.totalRowCountLoading === true || manualTotalRowCountLoading.value); const canCalculateTotalRowCount = computed( () => !isResultsContext.value && !!props.connectionId && (!!props.tableMeta || !!props.countSql), @@ -1967,6 +1969,16 @@ function applyCustomPageSize() { } async function lastPage() { + if (hasKnownTotalRowCount.value) { + const total = displayedTotalRowCount.value ?? 0; + if (total <= 0) return; + const lastPageNum = Math.ceil(total / pageSize.value); + if (lastPageNum <= currentPage.value) return; + currentPage.value = lastPageNum; + resetGridVerticalScroll(true); + emit("paginate", (lastPageNum - 1) * pageSize.value, pageSize.value, currentWhereInput(), currentOrderBy()); + return; + } if (!props.connectionId) return; const countTarget = await buildCurrentCountTarget(); const sql = countTarget?.sql; @@ -5587,7 +5599,7 @@ const gridContextMenuItems = computed(() => { -