From 47c712b3e0d553f77e198070e2b4356de19d042d Mon Sep 17 00:00:00 2001 From: Anton Laktionov Date: Tue, 23 Jun 2026 16:54:05 +0300 Subject: [PATCH] add api request --- src/app/components/Dashboard.tsx | 31 ++++++++++++++++++++++++++++--- src/main.tsx | 9 ++++----- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/app/components/Dashboard.tsx b/src/app/components/Dashboard.tsx index 320ed1b..c89f60d 100644 --- a/src/app/components/Dashboard.tsx +++ b/src/app/components/Dashboard.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useState, useEffect } from "react"; import { Link } from "react-router"; import { Server, @@ -22,10 +22,13 @@ interface ServerStatus { } export function Dashboard() { - const [servers] = useState([ + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + const [servers,setServers] = useState([ { id: "1", - name: "Production API", + name: "Production APIs", url: "https://api.example.com", status: "online", responseTime: 142, @@ -85,6 +88,28 @@ export function Dashboard() { }, ]); + useEffect(() => { + const fetchData = async () => { + try { + setLoading(true); + const response = await fetch('https://bitrix.tavres.ru/rest/1/2jkuss1wwr0vnkkt/iblock.servers'); + if (!response.ok) { + throw new Error('Network response was not ok'); + } + const result = await response.json(); + setServers([...servers, ...result['result']]); + setError(null); + } catch (err) { + setError(err.message); + } finally { + setLoading(false); + } + }; + fetchData(); + const intervalId = setInterval(fetchData, 5000); + return () => clearInterval(intervalId); + },[]) + const onlineCount = servers.filter((s) => s.status === "online").length; const offlineCount = servers.filter((s) => s.status === "offline").length; const warningCount = servers.filter((s) => s.status === "warning").length; diff --git a/src/main.tsx b/src/main.tsx index eb07ffb..f9eef54 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,7 +1,6 @@ +import { createRoot } from "react-dom/client"; +import App from "./app/App.tsx"; +import "./styles/index.css"; - import { createRoot } from "react-dom/client"; - import App from "./app/App.tsx"; - import "./styles/index.css"; - - createRoot(document.getElementById("root")!).render(); +createRoot(document.getElementById("root")!).render(); \ No newline at end of file