fix(grid): keep filters when refreshing restored table tabs
This commit is contained in:
1 parent
cd8300c3f5
commit
aa637b2d90
5 files changed
+101
-4
No files matched your search
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { canReloadUnavailableDataTab } from "@/lib/table/tableDataRefresh";
|
||||
import { canReloadUnavailableDataTab, restoredDataTabReloadFilters } from "@/lib/table/tableDataRefresh";
|
||||
|
||||
describe("canReloadUnavailableDataTab", () => {
|
||||
it("allows restored data tabs to reload before the grid mounts", () => {
|
||||
@@ -21,3 +21,17 @@ describe("canReloadUnavailableDataTab", () => {
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("restoredDataTabReloadFilters", () => {
|
||||
it("carries the restored tab's own filter and sort back into the reload (#7963)", () => {
|
||||
expect(restoredDataTabReloadFilters({ whereInput: "status = 'active'", orderByInput: "name DESC" })).toEqual({
|
||||
whereInput: "status = 'active'",
|
||||
orderBy: "name DESC",
|
||||
});
|
||||
});
|
||||
|
||||
it("reports blank filters as absent so the reload does not emit an empty WHERE/ORDER BY", () => {
|
||||
expect(restoredDataTabReloadFilters({ whereInput: "", orderByInput: undefined })).toEqual({ whereInput: undefined, orderBy: undefined });
|
||||
expect(restoredDataTabReloadFilters({ whereInput: " ", orderByInput: " " })).toEqual({ whereInput: undefined, orderBy: undefined });
|
||||
});
|
||||
});
|
||||
@@ -5,3 +5,16 @@ type RefreshableDataTab = Pick<QueryTab, "mode" | "result" | "isExecuting">;
|
||||
export function canReloadUnavailableDataTab(tab: RefreshableDataTab): boolean {
|
||||
return tab.mode === "data" && !tab.result && !tab.isExecuting;
|
||||
}
|
||||
|
||||
type RestoredDataTabFilters = Pick<QueryTab, "whereInput" | "orderByInput">;
|
||||
|
||||
// 恢复的数据标签页没有 result,刷新走的是 DataGrid 之外那条不带参数的 reload 入口。
|
||||
// onReloadData 把缺省的 whereInput/orderBy 当成“用户已清空”(DataGrid 清空筛选时
|
||||
// 正是传 undefined),所以这里必须显式回带标签页自己持久化的过滤/排序,
|
||||
// 否则刷新会退回整张表的数据(#7963)。
|
||||
export function restoredDataTabReloadFilters(tab: RestoredDataTabFilters): { whereInput?: string; orderBy?: string } {
|
||||
return {
|
||||
whereInput: tab.whereInput?.trim() || undefined,
|
||||
orderBy: tab.orderByInput?.trim() || undefined,
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user