From 5f84139c0007ed3db884a02544143406f5201946 Mon Sep 17 00:00:00 2001 From: lingniu Date: Sat, 4 Jul 2026 01:18:02 +0800 Subject: [PATCH] feat(platform-web): apply protocol in shared history links --- vehicle-data-platform/apps/web/src/App.tsx | 4 +- .../apps/web/src/pages/History.tsx | 11 +++--- .../apps/web/src/pages/Mileage.tsx | 10 ++--- .../apps/web/src/test/App.test.tsx | 38 ++++++++++++++++++- 4 files changed, 50 insertions(+), 13 deletions(-) diff --git a/vehicle-data-platform/apps/web/src/App.tsx b/vehicle-data-platform/apps/web/src/App.tsx index b5372ca0..2c1aba37 100644 --- a/vehicle-data-platform/apps/web/src/App.tsx +++ b/vehicle-data-platform/apps/web/src/App.tsx @@ -138,8 +138,8 @@ export default function App() { vehicles: , realtime: , detail: , - history: , - mileage: , + history: , + mileage: , quality: setLinkIssueCount(health.linkHealth.filter((item) => item.status !== 'ok').length)} /> }; diff --git a/vehicle-data-platform/apps/web/src/pages/History.tsx b/vehicle-data-platform/apps/web/src/pages/History.tsx index aaed864a..46f72a3e 100644 --- a/vehicle-data-platform/apps/web/src/pages/History.tsx +++ b/vehicle-data-platform/apps/web/src/pages/History.tsx @@ -33,8 +33,9 @@ function splitFields(value?: string) { .filter(Boolean); } -export function History({ initialVin, onOpenVehicle }: { initialVin: string; onOpenVehicle: (vin: string) => void }) { - const [filters, setFilters] = useState({ ...defaultFilters, keyword: initialVin || defaultFilters.keyword }); +export function History({ initialVin, initialProtocol, onOpenVehicle }: { initialVin: string; initialProtocol?: string; onOpenVehicle: (vin: string) => void }) { + const initialFilters = { ...defaultFilters, keyword: initialVin || defaultFilters.keyword, protocol: initialProtocol }; + const [filters, setFilters] = useState(initialFilters); const [locations, setLocations] = useState>(defaultPage); const [rawFrames, setRawFrames] = useState>(defaultPage); const [selectedRaw, setSelectedRaw] = useState(null); @@ -103,18 +104,18 @@ export function History({ initialVin, onOpenVehicle }: { initialVin: string; onO }; const reset = () => { - const nextFilters = { ...defaultFilters, keyword: initialVin || defaultFilters.keyword }; + const nextFilters = { ...defaultFilters, keyword: initialVin || defaultFilters.keyword, protocol: initialProtocol }; setFilters(nextFilters); loadLocations(nextFilters, 1, locationPagination.pageSize); loadRawFrames(nextFilters, 1, rawPagination.pageSize); }; useEffect(() => { - const nextFilters = { ...defaultFilters, keyword: initialVin || defaultFilters.keyword }; + const nextFilters = { ...defaultFilters, keyword: initialVin || defaultFilters.keyword, protocol: initialProtocol }; setFilters(nextFilters); loadLocations(nextFilters, 1, locationPagination.pageSize); loadRawFrames(nextFilters, 1, rawPagination.pageSize); - }, [initialVin]); + }, [initialVin, initialProtocol]); const rawFieldCount = useMemo(() => Object.keys(selectedRaw?.parsedFields ?? {}).length, [selectedRaw]); diff --git a/vehicle-data-platform/apps/web/src/pages/Mileage.tsx b/vehicle-data-platform/apps/web/src/pages/Mileage.tsx index 4f41c11d..8b53b78e 100644 --- a/vehicle-data-platform/apps/web/src/pages/Mileage.tsx +++ b/vehicle-data-platform/apps/web/src/pages/Mileage.tsx @@ -32,12 +32,12 @@ function canOpenVehicle(vin?: string) { return Boolean(value && value !== 'unknown'); } -export function Mileage({ initialVin, onOpenVehicle }: { initialVin: string; onOpenVehicle: (vin: string) => void }) { +export function Mileage({ initialVin, initialProtocol, onOpenVehicle }: { initialVin: string; initialProtocol?: string; onOpenVehicle: (vin: string) => void }) { const [rows, setRows] = useState([]); const [summary, setSummary] = useState(emptySummary); const [loading, setLoading] = useState(true); const [summaryLoading, setSummaryLoading] = useState(true); - const [filters, setFilters] = useState>({ keyword: initialVin }); + const [filters, setFilters] = useState>({ keyword: initialVin, protocol: initialProtocol ?? '' }); const [pagination, setPagination] = useState({ currentPage: 1, pageSize: 20, total: 0 }); const loadSummary = (values: Record = filters) => { @@ -60,11 +60,11 @@ export function Mileage({ initialVin, onOpenVehicle }: { initialVin: string; onO }; useEffect(() => { - const nextFilters = { keyword: initialVin }; + const nextFilters = { keyword: initialVin, protocol: initialProtocol ?? '' }; setFilters(nextFilters); loadSummary(nextFilters); load(nextFilters, 1, pagination.pageSize); - }, [initialVin]); + }, [initialVin, initialProtocol]); return (
@@ -87,7 +87,7 @@ export function Mileage({ initialVin, onOpenVehicle }: { initialVin: string; onO