File size: 2,233 Bytes
e7abd9e b8db958 e7abd9e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
import { useMemo, useRef, useState } from "react";
import { useQuery, useQueryClient } from "@tanstack/react-query";
import { useSearchParams } from "react-router-dom";
import { useLeaderboard } from "../context/LeaderboardContext";
import { useDataProcessing } from "../components/Table/hooks/useDataProcessing";
const CACHE_KEY = "leaderboardData";
const CACHE_DURATION = 5 * 60 * 1000; // 5 minutes
export const useLeaderboardData = () => {
return {
data: [], // 直接返回空数组,我们使用硬编码数据
isLoading: false,
error: null,
refetch: () => {}
};
};
export const useLeaderboardProcessing = () => {
const { state, actions } = useLeaderboard();
const [sorting, setSorting] = useState([
{ id: "model.average_score", desc: true },
]);
const memoizedData = useMemo(() => state.models, [state.models]);
const memoizedFilters = useMemo(
() => ({
search: state.filters.search,
precisions: state.filters.precisions,
types: state.filters.types,
paramsRange: state.filters.paramsRange,
booleanFilters: state.filters.booleanFilters,
isOfficialProviderActive: state.filters.isOfficialProviderActive,
}),
[
state.filters.search,
state.filters.precisions,
state.filters.types,
state.filters.paramsRange,
state.filters.booleanFilters,
state.filters.isOfficialProviderActive,
]
);
const {
table,
minAverage,
maxAverage,
getColorForValue,
processedData,
filteredData,
columns,
columnVisibility,
} = useDataProcessing(
memoizedData,
memoizedFilters.search,
memoizedFilters.precisions,
memoizedFilters.types,
memoizedFilters.paramsRange,
memoizedFilters.booleanFilters,
sorting,
state.display.rankingMode,
state.display.averageMode,
state.display.visibleColumns,
state.display.scoreDisplay,
state.pinnedModels,
actions.togglePinnedModel,
setSorting,
memoizedFilters.isOfficialProviderActive
);
return {
table,
minAverage,
maxAverage,
getColorForValue,
processedData,
filteredData,
columns,
columnVisibility,
loading: state.loading,
error: state.error,
};
};
|