import { useMemo, useState } from 'react'; import { useQuery } from '@tanstack/react-query'; import { ArrowRight, Clock3, Gauge, LogOut, RefreshCw, Search, ShieldAlert, Wrench } from 'lucide-react'; import edgeImage from '../../assets/edge.png'; import { getEdges } from '../../entities/edge/api'; import type { EdgeItem } from '../../entities/edge/types'; import { useAuth } from '../../auth/authContext'; type EdgesDashboardProps = { onOpenEdge: (edgeId: string) => void; onOpenEquipment: (edgeId: string) => void; }; function getEdgeTitle(edge: EdgeItem): string { return edge.name && edge.name !== edge.id ? edge.name : edge.id; } function filterEdges(edges: EdgeItem[], search: string): EdgeItem[] { const query = search.trim().toLowerCase(); return query ? edges.filter((edge) => `${edge.id} ${edge.name}`.toLowerCase().includes(query)) : edges; } /** Отображает список буровых без расчетов по текущим значениям. */ export function EdgesDashboard({ onOpenEdge, onOpenEquipment }: EdgesDashboardProps) { const [search, setSearch] = useState(''); const auth = useAuth(); const edges = useQuery({ queryKey: ['edge'], queryFn: getEdges, refetchInterval: false, }); const filteredEdges = useMemo(() => filterEdges(edges.data?.items ?? [], search), [edges.data?.items, search]); return (
Drill Cloud v3

Буровые установки

{auth.enabled ? ( ) : null}
{edges.isError ? (
Не удалось загрузить список буровых: {String(edges.error)}
) : (
{filteredEdges.map((edge) => ( ))}
)} {!edges.isPending && !filteredEdges.length && !edges.isError ? (
В cloud-v3 пока нет буровых
) : null}
); } function StatBlock({ label, value, tone, }: { label: string; value: number; tone: 'neutral' | 'success' | 'danger' | 'warning' | 'accent'; }) { return (
{label} {value}
); } function EdgeCard({ edge, onOpenEdge, onOpenEquipment, }: { edge: EdgeItem; onOpenEdge: (edgeId: string) => void; onOpenEquipment: (edgeId: string) => void; }) { const title = getEdgeTitle(edge); return (

{title}

{edge.id}
Техническое обслуживание
); }