-
- {data.data.marketData.price.toFixed(2)} ₽
-
-
- {data.data.marketData.yieldToMaturity !== null
- ? `Доходность: ${data.data.marketData.yieldToMaturity.toFixed(2)}%`
- : 'N/A'}
-
+
);
diff --git a/apps/frontend/src/pages/StockPage.tsx b/apps/frontend/src/pages/StockPage.tsx
index b9a6ce2..f7b44c0 100644
--- a/apps/frontend/src/pages/StockPage.tsx
+++ b/apps/frontend/src/pages/StockPage.tsx
@@ -1,47 +1,53 @@
import { useParams } from 'react-router-dom';
-import { useQuery } from '@tanstack/react-query';
-import { getShare } from '../api/client';
+import { useStock } from '../hooks/useStock';
+import { useStockCandles } from '../hooks/useStockCandles';
+import { useStockDividends } from '../hooks/useStockDividends';
+import { StockDetails } from '../components/StockDetails';
+import { PriceChart } from '../components/PriceChart';
export function StockPage() {
const { secid } = useParams<{ secid: string }>();
- const { data, isLoading, error } = useQuery({
- queryKey: ['shares', secid],
- queryFn: () => getShare(secid!),
- enabled: !!secid,
- });
+ const { data: stock, isLoading, error } = useStock(secid!);
+ const till = new Date().toISOString().split('T')[0];
+ const from = new Date(Date.now() - 365 * 24 * 60 * 60 * 1000).toISOString().split('T')[0];
+ const { data: candles } = useStockCandles(secid!, '24h', from, till);
+ const { data: dividends } = useStockDividends(secid!);
if (isLoading) return
Загрузка...
;
- if (error || !data) return
Ошибка загрузки данных
;
+ if (error || !stock) return
Инструмент не найден
;
return (
-
-
{data.data.shortName}
-
- {data.data.secid} · {data.data.isin}
-
-
-
- {data.data.marketData.price.toFixed(2)} ₽
-
-
= 0 ? 'var(--color-positive)' : 'var(--color-negative)',
- }}
- >
- {data.data.marketData.change >= 0 ? '+' : ''}
- {data.data.marketData.change.toFixed(2)} /{' '}
- {data.data.marketData.changePercent >= 0 ? '+' : ''}
- {data.data.marketData.changePercent.toFixed(2)}%
-
+
+
+
+
+
+ {dividends && dividends.length > 0 && (
+
+
Дивиденды
+
+
+
+ | Дата закрытия реестра |
+ Сумма |
+
+
+
+ {dividends.map((d, i) => (
+
+ | {d.registryCloseDate} |
+
+ {d.value.toFixed(2)} {d.currency}
+ |
+
+ ))}
+
+
+
+ )}
);
}