diff --git a/src/components/olmap/BurstDetection/AnalysisParameters.tsx b/src/components/olmap/BurstDetection/AnalysisParameters.tsx index 864b3e0..4a11577 100644 --- a/src/components/olmap/BurstDetection/AnalysisParameters.tsx +++ b/src/components/olmap/BurstDetection/AnalysisParameters.tsx @@ -124,6 +124,9 @@ const AnalysisParameters: React.FC = ({ }); const burstSchemes = (response.data as SchemeItem[]).filter( (scheme) => scheme.scheme_type === "burst_analysis", + ).sort( + (a, b) => + dayjs(b.create_time).valueOf() - dayjs(a.create_time).valueOf(), ); setFormField("schemes", burstSchemes); diff --git a/src/components/olmap/BurstDetection/SchemeQuery.tsx b/src/components/olmap/BurstDetection/SchemeQuery.tsx index c773b0e..6a44e7a 100644 --- a/src/components/olmap/BurstDetection/SchemeQuery.tsx +++ b/src/components/olmap/BurstDetection/SchemeQuery.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useState } from "react"; +import React, { useMemo, useState } from "react"; import { Box, Button, @@ -69,6 +69,16 @@ const SchemeQuery: React.FC = ({ const [loading, setLoading] = useState(false); const schemes = externalSchemes !== undefined ? externalSchemes : internalSchemes; const setSchemes = onSchemesChange || setInternalSchemes; + const sortedSchemes = useMemo( + () => + schemes + .slice() + .sort( + (a, b) => + dayjs(b.create_time).valueOf() - dayjs(a.create_time).valueOf(), + ), + [schemes], + ); const buildDisplayResult = ( scheme: Pick, @@ -214,7 +224,7 @@ const SchemeQuery: React.FC = ({ - {schemes.length === 0 ? ( + {sortedSchemes.length === 0 ? ( 暂无侦测方案 @@ -224,9 +234,9 @@ const SchemeQuery: React.FC = ({ ) : ( - 共 {schemes.length} 条记录 + 共 {sortedSchemes.length} 条记录 - {schemes.map((scheme) => { + {sortedSchemes.map((scheme) => { const summary = scheme.scheme_detail?.result_summary; const payload = scheme.scheme_detail?.result_payload; const isBurst = payload?.summary?.burst_detected ?? summary?.burst_detected ?? false; diff --git a/src/components/olmap/BurstLocation/AnalysisParameters.tsx b/src/components/olmap/BurstLocation/AnalysisParameters.tsx index 4a872c2..c8d955b 100644 --- a/src/components/olmap/BurstLocation/AnalysisParameters.tsx +++ b/src/components/olmap/BurstLocation/AnalysisParameters.tsx @@ -128,6 +128,9 @@ const AnalysisParameters: React.FC = ({ }); const burstSchemes = (response.data as SchemeItem[]).filter( (scheme) => scheme.scheme_type === "burst_analysis", + ).sort( + (a, b) => + dayjs(b.create_time).valueOf() - dayjs(a.create_time).valueOf(), ); setFormField("schemes", burstSchemes); diff --git a/src/components/olmap/BurstLocation/SchemeQuery.tsx b/src/components/olmap/BurstLocation/SchemeQuery.tsx index d83ccca..a3e29a4 100644 --- a/src/components/olmap/BurstLocation/SchemeQuery.tsx +++ b/src/components/olmap/BurstLocation/SchemeQuery.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useState } from "react"; +import React, { useMemo, useState } from "react"; import { Box, Button, @@ -70,6 +70,16 @@ const SchemeQuery: React.FC = ({ const [loading, setLoading] = useState(false); const schemes = externalSchemes !== undefined ? externalSchemes : internalSchemes; const setSchemes = onSchemesChange || setInternalSchemes; + const sortedSchemes = useMemo( + () => + schemes + .slice() + .sort( + (a, b) => + dayjs(b.create_time).valueOf() - dayjs(a.create_time).valueOf(), + ), + [schemes], + ); const buildDisplayResult = ( scheme: Pick, @@ -211,7 +221,7 @@ const SchemeQuery: React.FC = ({ - {schemes.length === 0 ? ( + {sortedSchemes.length === 0 ? ( = ({ ) : ( - 共 {schemes.length} 条记录 + 共 {sortedSchemes.length} 条记录 - {schemes.map((scheme) => { + {sortedSchemes.map((scheme) => { const summary = scheme.scheme_detail?.result_summary; const payload = scheme.scheme_detail?.result_payload; const locatedPipe = payload?.located_pipe ?? summary?.located_pipe ?? "-"; diff --git a/src/components/olmap/BurstSimulation/SchemeQuery.tsx b/src/components/olmap/BurstSimulation/SchemeQuery.tsx index d2ab883..a92d6b1 100644 --- a/src/components/olmap/BurstSimulation/SchemeQuery.tsx +++ b/src/components/olmap/BurstSimulation/SchemeQuery.tsx @@ -128,7 +128,13 @@ const SchemeQuery: React.FC = ({ }; const filteredSchemes = useMemo(() => { - return schemes.filter((scheme) => scheme.type === SCHEME_TYPE); + return schemes + .filter((scheme) => scheme.type === SCHEME_TYPE) + .slice() + .sort( + (a, b) => + moment(b.create_time).valueOf() - moment(a.create_time).valueOf(), + ); }, [schemes]); const handleQuery = async () => { diff --git a/src/components/olmap/ContaminantSimulation/SchemeQuery.tsx b/src/components/olmap/ContaminantSimulation/SchemeQuery.tsx index ceac84c..4797660 100644 --- a/src/components/olmap/ContaminantSimulation/SchemeQuery.tsx +++ b/src/components/olmap/ContaminantSimulation/SchemeQuery.tsx @@ -202,7 +202,13 @@ const SchemeQuery: React.FC = ({ }; const filteredSchemes = useMemo(() => { - return schemes.filter((scheme) => scheme.type === SCHEME_TYPE); + return schemes + .filter((scheme) => scheme.type === SCHEME_TYPE) + .slice() + .sort( + (a, b) => + moment(b.create_time).valueOf() - moment(a.create_time).valueOf(), + ); }, [schemes]); const handleQuery = async () => { diff --git a/src/components/olmap/DMALeakDetection/SchemeQuery.tsx b/src/components/olmap/DMALeakDetection/SchemeQuery.tsx index 39ad5e6..bae1d39 100644 --- a/src/components/olmap/DMALeakDetection/SchemeQuery.tsx +++ b/src/components/olmap/DMALeakDetection/SchemeQuery.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useState } from "react"; +import React, { useMemo, useState } from "react"; import { Box, Button, @@ -65,6 +65,16 @@ const SchemeQuery: React.FC = ({ const [loading, setLoading] = useState(false); const schemes = externalSchemes !== undefined ? externalSchemes : internalSchemes; const setSchemes = onSchemesChange || setInternalSchemes; + const sortedSchemes = useMemo( + () => + schemes + .slice() + .sort( + (a, b) => + dayjs(b.create_time).valueOf() - dayjs(a.create_time).valueOf(), + ), + [schemes], + ); const handleQuery = async () => { setLoading(true); @@ -144,7 +154,7 @@ const SchemeQuery: React.FC = ({ - {schemes.length === 0 ? ( + {sortedSchemes.length === 0 ? ( = ({ ) : ( - 共 {schemes.length} 条记录 + 共 {sortedSchemes.length} 条记录 - {schemes.map((scheme) => ( + {sortedSchemes.map((scheme) => ( diff --git a/src/components/olmap/FlushingAnalysis/SchemeQuery.tsx b/src/components/olmap/FlushingAnalysis/SchemeQuery.tsx index ce17de7..256b5b3 100644 --- a/src/components/olmap/FlushingAnalysis/SchemeQuery.tsx +++ b/src/components/olmap/FlushingAnalysis/SchemeQuery.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useMemo, useState } from "react"; import ReactDOM from "react-dom"; import { @@ -108,6 +108,16 @@ const SchemeQuery: React.FC = ({ const schemes = externalSchemes !== undefined ? externalSchemes : internalSchemes; const setSchemes = onSchemesChange || setInternalSchemes; + const sortedSchemes = useMemo( + () => + schemes + .slice() + .sort( + (a, b) => + moment(b.create_time).valueOf() - moment(a.create_time).valueOf(), + ), + [schemes], + ); useEffect(() => { if (!map) return; @@ -387,7 +397,7 @@ const SchemeQuery: React.FC = ({ {/* Results List */} - {schemes.length === 0 ? ( + {sortedSchemes.length === 0 ? ( = ({ ) : ( - 共 {schemes.length} 条记录 + 共 {sortedSchemes.length} 条记录 - {schemes.map((scheme) => ( + {sortedSchemes.map((scheme) => ( = ({ const schemes = externalSchemes !== undefined ? externalSchemes : internalSchemes; const setSchemes = onSchemesChange || setInternalSchemes; + const sortedSchemes = useMemo( + () => + schemes + .slice() + .sort( + (a, b) => + moment(b.create_time).valueOf() - moment(a.create_time).valueOf(), + ), + [schemes], + ); // 格式化简短日期 const formatShortDate = (timeStr: string) => { @@ -313,7 +323,7 @@ const SchemeQuery: React.FC = ({ {/* 结果列表 */} - {schemes.length === 0 ? ( + {sortedSchemes.length === 0 ? ( = ({ ) : ( - 共 {schemes.length} 条记录 + 共 {sortedSchemes.length} 条记录 - {schemes.map((scheme) => ( + {sortedSchemes.map((scheme) => (