MetricsChart.tsx

Обзор

MetricsChart.tsx — это React-компонент, предназначенный для визуализации временных рядов метрик в виде интерактивных графиков. Файл содержит основной компонент MetricsChart, который отображает линейный график с заливкой, шкалами, сеткой, индикаторами тренда и дополнительной информацией о текущем значении и изменениях метрик. Также в файле определены специализированные компоненты для отображения конкретных метрик: TPS (транзакций в секунду), среднего времени блока, состояния сети и количества активных валидаторов.

Графики рисуются с помощью HTML5 <canvas>, что обеспечивает высокую производительность и гибкость визуализации. Компонент поддерживает настройку цвета, высоты, иконки, единиц измерения, форматирования значений и отображения тренда.


Подробное описание компонентов и функций

Типы и интерфейсы

interface MetricPoint {
  timestamp: number;
  value: number;
}
interface MetricsChartProps {
  title: string;
  data: MetricPoint[];
  color: string;
  unit?: string;
  icon?: React.ReactNode;
  height?: number;
  showTrend?: boolean;
  formatValue?: (value: number) => string;
}

Компонент MetricsChart

export function MetricsChart(props: MetricsChartProps)

Описание

Основной компонент визуализации метрик. Отрисовывает график с сеткой, линией, заливкой, точками данных, текущим значением, трендом и информацией о максимуме и минимуме.

Параметры

Передаётся объект с пропсами, описанными в интерфейсе MetricsChartProps.

Логика и особенности реализации

Возвращаемое значение

JSX-разметка, отображающая оформленный график с дополнительной информацией.

Пример использования

<MetricsChart
  title="Example Metric"
  data={[{ timestamp: 1, value: 10 }, { timestamp: 2, value: 15 }]}
  color="#ff0000"
  unit=" units"
  icon={<SomeIcon />}
  height={250}
  showTrend={true}
  formatValue={(v) => v.toFixed(2)}
/>

Специализированные компоненты

Каждый из следующих компонентов является обёрткой над MetricsChart, задающей конкретные параметры для разных метрик.

TPSChart

export function TPSChart({ data }: { data: MetricPoint[] })

BlockTimeChart

export function BlockTimeChart({ data }: { data: MetricPoint[] })

NetworkHealthChart

export function NetworkHealthChart({ data }: { data: MetricPoint[] })

ValidatorCountChart

export function ValidatorCountChart({ data }: { data: MetricPoint[] })

Важные детали реализации и алгоритмы


Взаимодействие с другими частями системы


Диаграмма структуры компонентов

componentDiagram
    MetricsChart <|-- TPSChart
    MetricsChart <|-- BlockTimeChart
    MetricsChart <|-- NetworkHealthChart
    MetricsChart <|-- ValidatorCountChart

    MetricsChart : +title: string
    MetricsChart : +data: MetricPoint[]
    MetricsChart : +color: string
    MetricsChart : +unit?: string
    MetricsChart : +icon?: React.ReactNode
    MetricsChart : +height?: number
    MetricsChart : +showTrend?: boolean
    MetricsChart : +formatValue?: (value: number) => string

    TPSChart --> MetricsChart : Использует с параметрами (title="Transactions Per Second", color="#fbbf24", unit=" TPS", icon=Zap)
    BlockTimeChart --> MetricsChart : Использует с параметрами (title="Average Block Time", color="#10b981", unit="s", icon=Clock)
    NetworkHealthChart --> MetricsChart : Использует с параметрами (title="Network Health", color="#3b82f6", unit="%", icon=Activity)
    ValidatorCountChart --> MetricsChart : Использует с параметрами (title="Active Validators", color="#8b5cf6", icon=Users, showTrend=false)

Резюме

Файл MetricsChart.tsx предоставляет мощный и настраиваемый компонент для визуализации временных рядов метрик в виде красочных и информативных линейных графиков. Он сочетает в себе эффективную отрисовку на <canvas>, расчет трендов и удобную структуру с возможностью расширения через специализированные обёртки. Это ключевой элемент для построения аналитических панелей и мониторинговых систем в React-приложениях.