@@ -34,7 +48,7 @@ const MenuItem = ({ item, onSelectItem }) => {
function SidebarMenu({ onOpenTab }) {
const handleSelectItem = (item) => {
onOpenTab(item.id, item.title); // Передаем id и title
- };
+ };
return (
diff --git a/src/Components/LoginModal.jsx b/src/Components/LoginModal.jsx
deleted file mode 100644
index 895df58..0000000
--- a/src/Components/LoginModal.jsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import React, { useState } from "react";
-
-const Login = ({ onLogin, onClose }) => {
- const [username, setUsername] = useState("");
- const [password, setPassword] = useState("");
- const [error, setError] = useState("");
-
- const handleSubmit = (e) => {
- e.preventDefault();
- if (username === "admin" && password === "admin") {
- onLogin(); // Успешная авторизация
- onClose(); // Закрыть модальное окно
- } else {
- setError("Неверный логин или пароль");
- }
- };
-
- return (
-
- );
-};
-
-export default Login;
\ No newline at end of file
diff --git a/src/Components/TreeChart.jsx b/src/Components/TreeChart/TreeChart.jsx
similarity index 77%
rename from src/Components/TreeChart.jsx
rename to src/Components/TreeChart/TreeChart.jsx
index c008388..fc61b48 100644
--- a/src/Components/TreeChart.jsx
+++ b/src/Components/TreeChart/TreeChart.jsx
@@ -11,7 +11,7 @@ const TreeChart = ({ data, onNodeClick }) => {
d3.select(chartRef.current).selectAll("*").remove();
const width = 928;
- const height = 600;
+ const height = 1000;
const root = d3.hierarchy(data, (d) => d.items);
const links = root.links();
@@ -19,8 +19,8 @@ const TreeChart = ({ data, onNodeClick }) => {
const simulation = d3
.forceSimulation(nodes)
- .force("link", d3.forceLink(links).id((d) => d.data.title).distance(80).strength(1)) // Увеличил дистанцию
- .force("charge", d3.forceManyBody().strength(-500)) // Увеличил отталкивание узлов
+ .force("link", d3.forceLink(links).id((d) => d.data.title).distance(80).strength(1))
+ .force("charge", d3.forceManyBody().strength(-500))
.force("x", d3.forceX())
.force("y", d3.forceY());
@@ -46,9 +46,21 @@ const TreeChart = ({ data, onNodeClick }) => {
.selectAll("circle")
.data(nodes)
.join("circle")
- .attr("fill", (d) => (d.children ? "#555" : "#000"))
+ .attr("fill", (d) => {
+ // Окрашиваем узлы в зависимости от статуса
+ switch (d.data.status) {
+ case "green":
+ return "#4CAF50"; // Зеленый
+ case "yellow":
+ return "#FFEB3B"; // Желтый
+ case "red":
+ return "#F44336"; // Красный
+ default:
+ return "#555"; // Серый по умолчанию
+ }
+ })
.attr("stroke", "#fff")
- .attr("r", 7) // Немного увеличил размер узлов для удобства клика
+ .attr("r", 7)
.call(drag(simulation));
// Добавляем текстовые подписи
@@ -57,13 +69,13 @@ const TreeChart = ({ data, onNodeClick }) => {
.attr("fill", "#000")
.attr("font-family", "Arial")
.attr("font-size", 12)
- .attr("pointer-events", "none") // Отключаем обработку событий текста
+ .attr("pointer-events", "none")
.selectAll("text")
.data(nodes)
.join("text")
.text((d) => d.data.title)
- .attr("dx", 12) // Отодвигаем текст дальше от узла
- .attr("dy", 4) // Немного поднимаем текст
+ .attr("dx", 12)
+ .attr("dy", 4);
node.append("title").text((d) => d.data.title);
@@ -85,7 +97,7 @@ const TreeChart = ({ data, onNodeClick }) => {
.attr("cy", (d) => d.y);
text
- .attr("x", (d) => d.x + 12) // Смещаем текст правее узла
+ .attr("x", (d) => d.x + 12)
.attr("y", (d) => d.y + 4);
});
@@ -118,4 +130,4 @@ const TreeChart = ({ data, onNodeClick }) => {
return
;
};
-export default TreeChart;
+export default TreeChart;
\ No newline at end of file
diff --git a/src/Components/TreeChart/menuData.json b/src/Components/TreeChart/menuData.json
new file mode 100644
index 0000000..73144fd
--- /dev/null
+++ b/src/Components/TreeChart/menuData.json
@@ -0,0 +1,225 @@
+{
+ "title": "Сервис ВКС",
+ "status": "red",
+ "items": [
+ {
+ "title": "Функциональные задачи",
+ "status": "yellow",
+ "items": [
+ {
+ "id": "system_control",
+ "title": "Контроль системы",
+ "status": "red"
+ },
+ {
+ "id": "system_management",
+ "title": "Система управления",
+ "status": "green"
+ },
+ {
+ "id": "conference",
+ "title": "Проведение ВКС",
+ "status": "green"
+ },
+ {
+ "id": "backup",
+ "title": "Резервное копирование",
+ "status": "green"
+ },
+ {
+ "id": "relay_info",
+ "title": "Ретрансляция информации",
+ "status": "green"
+ }
+ ]
+ },
+ {
+ "title": "Медиа сервер",
+ "items": [
+ {
+ "title": "Аппаратное обеспечение",
+ "items": [
+ {
+ "id": "media_system_software_1",
+ "title": "Центральный процессор"
+ },
+ {
+ "id": "media_system_software_2",
+ "title": "Оперативная память"
+ },
+ {
+ "id": "media_system_software_3",
+ "title": "Жесткий диск"
+ },
+ {
+ "id": "media_system_software_4",
+ "title": "Сетевые адаптеры"
+ }
+ ]
+ },
+ {
+ "title": "Программное обеспечение",
+ "items": [
+ {
+ "id": "media_software_1",
+ "title": "ПО"
+ },
+ {
+ "id": "media_software_2",
+ "title": "ПО"
+ },
+ {
+ "id": "media_software_3",
+ "title": "ПО"
+ },
+ {
+ "id": "media_software_4",
+ "title": "ПО"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Сервер резервного копирования",
+ "items": [
+ {
+ "title": "Аппаратное обеспечение",
+ "items": [
+ {
+ "id": "copy_system_software_1",
+ "title": "Центральный процессор"
+ },
+ {
+ "id": "copy_system_software_2",
+ "title": "Оперативная память"
+ },
+ {
+ "id": "copy_system_software_3",
+ "title": "Жесткий диск"
+ },
+ {
+ "id": "copy_system_software_4",
+ "title": "Сетевые адаптеры"
+ }
+ ]
+ },
+ {
+ "title": "Программное обеспечение",
+ "items": [
+ {
+ "id": "copy_software_1",
+ "title": "ПО"
+ },
+ {
+ "id": "copy_software_2",
+ "title": "ПО"
+ },
+ {
+ "id": "copy_software_3",
+ "title": "ПО"
+ },
+ {
+ "id": "copy_software_4",
+ "title": "ПО"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Сервер системы управления",
+ "items": [
+ {
+ "title": "Аппаратное обеспечение",
+ "items": [
+ {
+ "id": "control_system_software_1",
+ "title": "Центральный процессор"
+ },
+ {
+ "id": "control_system_software_2",
+ "title": "Оперативная память"
+ },
+ {
+ "id": "control_system_software_3",
+ "title": "Жесткий диск"
+ },
+ {
+ "id": "control_system_software_4",
+ "title": "Сетевые адаптеры"
+ }
+ ]
+ },
+ {
+ "title": "Программное обеспечение",
+ "items": [
+ {
+ "id": "control_software_1",
+ "title": "ПО"
+ },
+ {
+ "id": "control_software_2",
+ "title": "ПО"
+ },
+ {
+ "id": "control_software_3",
+ "title": "ПО"
+ },
+ {
+ "id": "control_software_4",
+ "title": "ПО"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Сервер сбора и ретрансляции информации",
+ "items": [
+ {
+ "title": "Аппаратное обеспечение",
+ "items": [
+ {
+ "id": "system_software_1",
+ "title": "Центральный процессор"
+ },
+ {
+ "id": "system_software_2",
+ "title": "Оперативная память"
+ },
+ {
+ "id": "system_software_3",
+ "title": "Жесткий диск"
+ },
+ {
+ "id": "system_software_4",
+ "title": "Сетевые адаптеры"
+ }
+ ]
+ },
+ {
+ "title": "Программное обеспечение",
+ "items": [
+ {
+ "id": "software_1",
+ "title": "ПО"
+ },
+ {
+ "id": "software_2",
+ "title": "ПО"
+ },
+ {
+ "id": "software_3",
+ "title": "ПО"
+ },
+ {
+ "id": "software_4",
+ "title": "ПО"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/Components/TreeChart/menuData3.json b/src/Components/TreeChart/menuData3.json
new file mode 100644
index 0000000..1c0eeda
--- /dev/null
+++ b/src/Components/TreeChart/menuData3.json
@@ -0,0 +1,117 @@
+{
+ "title": "Сервис ВКС",
+ "items": [
+ {
+ "title": "Функциональные задачи",
+ "items": [
+ {
+ "title": "Тест",
+ "items": [
+ {
+ "id": "test1",
+ "title": "тест2"
+ },
+ {
+ "id": "test2",
+ "title": "Тест3"
+ }
+ ]
+ },
+ {
+ "id": "system_control",
+ "title": "Контроль системы"
+ },
+ {
+ "id": "system_management",
+ "title": "Система управления"
+ },
+ {
+ "id": "conference",
+ "title": "Проведение ВКС"
+ },
+ {
+ "id": "backup",
+ "title": "Резервное копирование"
+ },
+ {
+ "id": "relay_info",
+ "title": "Ретрансляция информации"
+ }
+ ]
+ },
+ {
+ "title": "Аппаратное обеспечение",
+ "items": [
+ {
+ "id": "hardware_software_1",
+ "title": "Сервер системы управления"
+ },
+ {
+ "id": "hardware_software_2",
+ "title": "Сервер системы управления"
+ },
+ {
+ "id": "hardware_software_3",
+ "title": "Медиа-сервер"
+ },
+ {
+ "id": "hardware_software_4",
+ "title": "Медиа-сервер"
+ },
+ {
+ "id": "hardware_software_5",
+ "title": "Медиа-сервер"
+ },
+ {
+ "id": "hardware_software_6",
+ "title": "Медиа-сервер"
+ },
+ {
+ "id": "hardware_software_7",
+ "title": "Сервер резервного копирования"
+ },
+ {
+ "id": "hardware_software_8",
+ "title": "Сервер сбора и ретрансляции информации"
+ }
+ ]
+ },
+ {
+ "title": "Программное обеспечение",
+ "items": [
+ {
+ "id": "software_1",
+ "title": "БП/ППО"
+ },
+ {
+ "id": "software_2",
+ "title": "БП/ППО"
+ },
+ {
+ "id": "software_3",
+ "title": "БП/ППО"
+ },
+ {
+ "id": "software_4",
+ "title": "БП/ППО"
+ },
+ {
+ "id": "software_5",
+ "title": "БП/ППО"
+ },
+ {
+ "id": "software_6",
+ "title": "БП/ППО"
+ },
+ {
+ "id": "software_7",
+ "title": "БП/ППО"
+ },
+ {
+ "id": "software_8",
+ "title": "БП/ППО"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/Components/TreeChart/tabContent.jsx b/src/Components/TreeChart/tabContent.jsx
new file mode 100644
index 0000000..922e777
--- /dev/null
+++ b/src/Components/TreeChart/tabContent.jsx
@@ -0,0 +1,56 @@
+import React from "react";
+import PrometheusChart from '../../Charts/PrometheusChart';
+
+const tabContent = {
+ // Сервис ВКС
+ service1: { title: "Сервис ВКС", content:
Сервис ВКС
},
+
+ // Функциональные задачи
+ system_control: { title: "Контроль системы", content:
Контроль системы
Описание контроля.
},
+ system_management: { title: "Система управления", content:
Система управления
Описание системы управления.
},
+ conference: { title: "Проведение ВКС", content:
Проведение ВКС
Информация о проведении ВКС.
},
+ backup: { title: "Резервное копирование", content:
Резервное копирование
Процесс резервного копирования.
},
+ relay_info: { title: "Ретрансляция информации", content:
Ретрансляция информации
Детали ретрансляции.
},
+
+ // Медиа сервер
+ media_system_software_1: { title: "Центральный процессор", content:
Центральный процессор
Описание центрального процессора медиа сервера.
},
+ media_system_software_2: { title: "Оперативная память", content:
Оперативная память
Описание оперативной памяти медиа сервера.
},
+ media_system_software_3: { title: "Жесткий диск", content:
Жесткий диск
Описание жесткого диска медиа сервера.
},
+ media_system_software_4: { title: "Сетевые адаптеры", content:
Сетевые адаптеры
Описание сетевых адаптеров медиа сервера.
},
+ media_software_1: { title: "ПО", content:
Программное обеспечение медиа сервера
},
+ media_software_2: { title: "ПО", content:
Программное обеспечение медиа сервера
Описание ПО медиа сервера.
},
+ media_software_3: { title: "ПО", content:
Программное обеспечение медиа сервера
Описание ПО медиа сервера.
},
+ media_software_4: { title: "ПО", content:
Программное обеспечение медиа сервера
Описание ПО медиа сервера.
},
+
+ // Сервер резервного копирования
+ copy_system_software_1: { title: "Центральный процессор", content:
Центральный процессор
Описание центрального процессора сервера резервного копирования.
},
+ copy_system_software_2: { title: "Оперативная память", content:
Оперативная память
Описание оперативной памяти сервера резервного копирования.
},
+ copy_system_software_3: { title: "Жесткий диск", content:
Жесткий диск
Описание жесткого диска сервера резервного копирования.
},
+ copy_system_software_4: { title: "Сетевые адаптеры", content:
Сетевые адаптеры
Описание сетевых адаптеров сервера резервного копирования.
},
+ copy_software_1: { title: "ПО", content:
Программное обеспечение сервера резервного копирования
Описание ПО сервера резервного копирования.
},
+ copy_software_2: { title: "ПО", content:
Программное обеспечение сервера резервного копирования
Описание ПО сервера резервного копирования.
},
+ copy_software_3: { title: "ПО", content:
Программное обеспечение сервера резервного копирования
Описание ПО сервера резервного копирования.
},
+ copy_software_4: { title: "ПО", content:
Программное обеспечение сервера резервного копирования
Описание ПО сервера резервного копирования.
},
+
+ // Сервер системы управления
+ control_system_software_1: { title: "Центральный процессор", content:
Центральный процессор
Описание центрального процессора сервера системы управления.
},
+ control_system_software_2: { title: "Оперативная память", content:
Оперативная память
Описание оперативной памяти сервера системы управления.
},
+ control_system_software_3: { title: "Жесткий диск", content:
Жесткий диск
Описание жесткого диска сервера системы управления.
},
+ control_system_software_4: { title: "Сетевые адаптеры", content:
Сетевые адаптеры
Описание сетевых адаптеров сервера системы управления.
},
+ control_software_1: { title: "ПО", content:
Программное обеспечение сервера системы управления
Описание ПО сервера системы управления.
},
+ control_software_2: { title: "ПО", content:
Программное обеспечение сервера системы управления
Описание ПО сервера системы управления.
},
+ control_software_3: { title: "ПО", content:
Программное обеспечение сервера системы управления
Описание ПО сервера системы управления.
},
+ control_software_4: { title: "ПО", content:
Программное обеспечение сервера системы управления
Описание ПО сервера системы управления.
},
+
+ // Сервер сбора и ретрансляции информации
+ system_software_1: { title: "Центральный процессор", content:
Центральный процессор
Описание центрального процессора сервера сбора и ретрансляции информации.
},
+ system_software_2: { title: "Оперативная память", content:
Оперативная память
Описание оперативной памяти сервера сбора и ретрансляции информации.
},
+ system_software_3: { title: "Жесткий диск", content:
Жесткий диск
Описание жесткого диска сервера сбора и ретрансляции информации.
},
+ system_software_4: { title: "Сетевые адаптеры", content:
Сетевые адаптеры
Описание сетевых адаптеров сервера сбора и ретрансляции информации.
},
+ software_1: { title: "ПО", content:
Программное обеспечение сервера сбора и ретрансляции информации
Описание ПО сервера сбора и ретрансляции информации.
},
+ software_2: { title: "ПО", content:
Программное обеспечение сервера сбора и ретрансляции информации
Описание ПО сервера сбора и ретрансляции информации.
},
+ software_3: { title: "ПО", content:
Программное обеспечение сервера сбора и ретрансляции информации
Описание ПО сервера сбора и ретрансляции информации.
},
+ software_4: { title: "ПО", content:
Программное обеспечение сервера сбора и ретрансляции информации
Описание ПО сервера сбора и ретрансляции информации.
},
+};
+
+export default tabContent;
\ No newline at end of file
diff --git a/src/Components/TreeChart/tabContent3.jsx b/src/Components/TreeChart/tabContent3.jsx
new file mode 100644
index 0000000..4124a32
--- /dev/null
+++ b/src/Components/TreeChart/tabContent3.jsx
@@ -0,0 +1,31 @@
+import React from "react";
+import NetworkSpeedChart2 from '../../Charts/TestCharts2';
+import PrometheusChart from '../../Charts/PrometheusChart';
+import PrometheusChart2 from '../../Charts/PrometheusChart2';
+
+const tabContent = {
+ service1: { title: "Сервис ВКС", content:
Сервис ВКС
},
+ system_control: { title: "Контроль системы", content:
Контроль системы
Описание контроля.
},
+ system_management: { title: "Система управления", content:
Система управления
Описание системы управления.
},
+ conference: { title: "Проведение ВКС", content:
Проведение ВКС
Информация о проведении ВКС.
},
+ backup: { title: "Резервное копирование", content:
Резервное копирование
Процесс резервного копирования.
},
+ relay_info: { title: "Ретрансляция информации", content:
Ретрансляция информации
Детали ретрансляции.
},
+ hardware_software_1: { title: "Сервер системы управления", content:
Сервер системы управления
},
+ hardware_software_2: { title: "Сервер системы управления", content:
Сервер системы управления
},
+ hardware_software_3: { title: "Медиа-сервер", content:
Медиа-сервер
},
+ hardware_software_4: { title: "Медиа-сервер", content:
Медиа-сервер
},
+ hardware_software_5: { title: "Медиа-сервер", content:
Медиа-сервер
},
+ hardware_software_6: { title: "Медиа-сервер", content:
Медиа-сервер
},
+ hardware_software_7: { title: "Сервер резервного копирования", content:
Сервер резервного копирования
},
+ hardware_software_8: { title: "Сервер сбора и ретрансляции информации", content:
Сервер сбора и ретрансляции информации
},
+ software_1: { title: "БП/ППО", content:
БП/ППО
},
+ software_2: { title: "БП/ППО", content:
БП/ППО
},
+ software_3: { title: "БП/ППО", content:
БП/ППО
},
+ software_4: { title: "БП/ППО", content:
БП/ППО
},
+ software_5: { title: "БП/ППО", content:
БП/ППО
},
+ software_6: { title: "БП/ППО", content:
БП/ППО
},
+ software_7: { title: "БП/ППО", content:
БП/ППО
},
+ software_8: { title: "БП/ППО", content:
БП/ППО
},
+};
+
+export default tabContent;
\ No newline at end of file
diff --git a/src/Components/ErrorIndicator.jsx b/src/Components/UI/ErrorIndicator.jsx
similarity index 70%
rename from src/Components/ErrorIndicator.jsx
rename to src/Components/UI/ErrorIndicator.jsx
index 7d71840..7215211 100644
--- a/src/Components/ErrorIndicator.jsx
+++ b/src/Components/UI/ErrorIndicator.jsx
@@ -1,7 +1,7 @@
import React from "react";
-import criticalIcon from "../assets/images/critical.png"; // Красный треугольник
-import warningIcon from "../assets/images/warning.png"; // Желтый треугольник
-import "../Style/ErrorIndicator.css"; // Подключаем стили
+import criticalIcon from "../../assets/images/critical.png"; // Красный треугольник
+import warningIcon from "../../assets/images/warning.png"; // Желтый треугольник
+import "../../Style/ErrorIndicator.css"; // Подключаем стили
const ErrorIndicator = ({ criticalCount, warningCount }) => {
return (
diff --git a/src/Components/ExpandableInfo.jsx b/src/Components/UI/ExpandableInfo.jsx
similarity index 100%
rename from src/Components/ExpandableInfo.jsx
rename to src/Components/UI/ExpandableInfo.jsx
diff --git a/src/Components/UI/LoginModal.jsx b/src/Components/UI/LoginModal.jsx
new file mode 100644
index 0000000..c4d5f09
--- /dev/null
+++ b/src/Components/UI/LoginModal.jsx
@@ -0,0 +1,49 @@
+import React, { useState } from "react";
+import Modal from "./Modal";
+import "../../Style/LoginModal.css";
+
+const LoginModal = ({ onLogin, onClose }) => {
+ const [username, setUsername] = useState("");
+ const [password, setPassword] = useState("");
+ const [error, setError] = useState("");
+
+ const handleSubmit = (e) => {
+ e.preventDefault();
+ if (username === "admin" && password === "admin") {
+ onLogin(); // Успешная авторизация
+ onClose(); // Закрыть модальное окно
+ } else {
+ setError("Неверный логин или пароль");
+ }
+ };
+
+ return (
+
+ Авторизация
+
+
+ );
+};
+
+export default LoginModal;
\ No newline at end of file
diff --git a/src/Components/UI/Modal.jsx b/src/Components/UI/Modal.jsx
new file mode 100644
index 0000000..3718035
--- /dev/null
+++ b/src/Components/UI/Modal.jsx
@@ -0,0 +1,14 @@
+import React from "react";
+
+const Modal = ({ children, onClose }) => {
+ return (
+
+
+ {children}
+
+
+
+ );
+};
+
+export default Modal;
\ No newline at end of file
diff --git a/src/Components/UI/Tabs.jsx b/src/Components/UI/Tabs.jsx
new file mode 100644
index 0000000..c8c18bb
--- /dev/null
+++ b/src/Components/UI/Tabs.jsx
@@ -0,0 +1,55 @@
+import React from "react";
+import "../../Style/common.css"; // Общие стили для табов
+
+const Tabs = ({ tabs, activeTab, onTabClick, onCloseTab }) => {
+ const handleMouseDown = (e, id) => {
+ // Проверяем, была ли нажата средняя кнопка мыши (button === 1)
+ if (e.button === 1) {
+ e.preventDefault(); // Предотвращаем стандартное поведение (например, прокрутку)
+ onCloseTab(id); // Закрываем вкладку
+ }
+ };
+
+ return (
+
+ {/* Всегда отображаемые вкладки */}
+
onTabClick("Главная")}
+ onMouseDown={(e) => handleMouseDown(e, "Главная")} // Добавляем обработчик для СКМ
+ >
+ Главная
+
+
onTabClick("Визуализация")}
+ onMouseDown={(e) => handleMouseDown(e, "Визуализация")} // Добавляем обработчик для СКМ
+ >
+ Визуализация
+
+
+ {/* Динамически добавляемые вкладки */}
+ {tabs.map((tab) => (
+
onTabClick(tab.id)}
+ onMouseDown={(e) => handleMouseDown(e, tab.id)} // Добавляем обработчик для СКМ
+ >
+ {tab.title}
+
+
+ ))}
+
+ );
+};
+
+export default Tabs;
\ No newline at end of file
diff --git a/src/Components/UI/TreeTable.jsx b/src/Components/UI/TreeTable.jsx
new file mode 100644
index 0000000..60a52d3
--- /dev/null
+++ b/src/Components/UI/TreeTable.jsx
@@ -0,0 +1,36 @@
+import React from "react";
+import "../../Style/TreeTable.css"; // Подключаем стили
+
+const TreeTable = ({ data }) => {
+ return (
+
+ {/* Первый уровень заголовков */}
+
+ {data.map((item, index) => (
+
+ ))}
+
+
+ {/* Вложенные элементы */}
+
+ {data.map((item, index) => (
+
+ {item.items && (
+
+ {item.items.map((child, childIndex) => (
+
+ {child.title}
+
+ ))}
+
+ )}
+
+ ))}
+
+
+ );
+};
+
+export default TreeTable;
diff --git a/src/Components/menuData.json b/src/Components/menuData.json
deleted file mode 100644
index daf3ef1..0000000
--- a/src/Components/menuData.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "title": "Сервис ВКС",
- "items": [
- {
- "title": "Функциональные задачи",
- "items": [
- {
- "id": "system_control",
- "title": "Контроль системы"
- },
- {
- "id": "system_management",
- "title": "Система управления"
- },
- {
- "id": "conference",
- "title": "Проведение ВКС"
- },
- {
- "id": "backup",
- "title": "Резервное копирование"
- },
- {
- "id": "relay_info",
- "title": "Ретрансляция информации"
- }
- ]
- },
- {
- "title": "Аппаратное ПО",
- "items": [
- {
- "id": "hardware_software_1",
- "title": "ПО1"
- },
- {
- "id": "hardware_software_2",
- "title": "ПО2"
- },
- {
- "id": "hardware_software_3",
- "title": "ПО3"
- },
- {
- "id": "hardware_software_4",
- "title": "ПО4"
- },
- {
- "id": "hardware_software_5",
- "title": "ПО5"
- }
- ]
- }
- ]
-}
diff --git a/src/Components/tabContent.jsx b/src/Components/tabContent.jsx
deleted file mode 100644
index 9f7aa40..0000000
--- a/src/Components/tabContent.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React from "react";
-import NetworkSpeedChart2 from '../Charts/TestCharts2';
-
-const tabContent = {
- service1: { title: "Сервис ВКС", content:
Сервис ВКС
},
- system_control: { title: "Контроль системы", content:
Контроль системы
Описание контроля.
},
- system_management: { title: "Система управления", content:
Система управления
Описание системы управления.
},
- conference: { title: "Проведение ВКС", content:
Проведение ВКС
Информация о проведении ВКС.
},
- backup: { title: "Резервное копирование", content:
Резервное копирование
Процесс резервного копирования.
},
- relay_info: { title: "Ретрансляция информации", content:
Ретрансляция информации
Детали ретрансляции.
},
- hardware_software_1: { title: "График скорости сети", content:
График скорости сети
},
- hardware_software_2: { title: "ПО2", content:
ПО2
},
- hardware_software_3: { title: "ПО3", content:
ПО3
},
- hardware_software_4: { title: "ПО4", content:
ПО4
},
- hardware_software_5: { title: "ПО5", content:
ПО5
},
-};
-
-export default tabContent;
\ No newline at end of file
diff --git a/src/Style/Dashboard.css b/src/Style/Dashboard.css
index 8a83bd3..e39b9ad 100644
--- a/src/Style/Dashboard.css
+++ b/src/Style/Dashboard.css
@@ -18,53 +18,12 @@
/* Ограничиваем высоту */
}
-
-/* Вкладки */
-.tabs {
- display: flex;
- gap: 5px;
- padding: 5px;
- background-color: #222;
- border-bottom: 2px solid #444;
- overflow-x: auto;
- white-space: nowrap;
-}
-
-.tab {
- display: flex;
- align-items: center;
- background-color: #333;
- color: white;
- padding: 5px 10px;
- border-radius: 5px 5px 0 0;
- cursor: pointer;
- max-width: 250px;
- /* Ограничиваем максимальную ширину */
- min-width: 100px;
- /* Минимальная ширина */
- flex-shrink: 0;
- /* Не позволяет вкладкам сжиматься */
- position: relative;
-}
-
-.tab.active {
- background-color: #555;
-}
-
-.close-tab {
- background: none;
- border: none;
- cursor: pointer;
- font-size: 16px;
- padding: 0;
-}
-
/* Контент */
.content {
background-color: #f9f9f9;
padding: 20px;
border-radius: 10px;
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 2px 5px rgba(29, 1, 1, 0.521);
}
.default-content {
diff --git a/src/Style/ErrorIndicator.css b/src/Style/ErrorIndicator.css
index efce90a..115f992 100644
--- a/src/Style/ErrorIndicator.css
+++ b/src/Style/ErrorIndicator.css
@@ -2,6 +2,7 @@
display: flex;
align-items: center;
gap: 15px;
+ padding-bottom: 20px;
}
.error-item {
@@ -33,4 +34,5 @@
align-items: center;
gap: 15px;
justify-content: center;
+
}
\ No newline at end of file
diff --git a/src/Style/LoginModal.css b/src/Style/LoginModal.css
index 0d6d28c..ae99fe0 100644
--- a/src/Style/LoginModal.css
+++ b/src/Style/LoginModal.css
@@ -11,7 +11,7 @@
}
.modal {
- background: white;
+ background: rgb(255, 255, 255);
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
@@ -26,6 +26,7 @@
.modal label {
display: block;
margin-bottom: 5px;
+ color: black;
}
.modal input {
@@ -38,7 +39,8 @@
.modal button {
padding: 10px 20px;
- background: #007bff;
+ margin-bottom: 5px;
+ background: #08294b;
color: white;
border: none;
border-radius: 4px;
diff --git a/src/Style/SidebarMenu.css b/src/Style/SidebarMenu.css
index 2956424..749045c 100644
--- a/src/Style/SidebarMenu.css
+++ b/src/Style/SidebarMenu.css
@@ -1,10 +1,10 @@
/* Боковое меню */
.sidebar {
- width: 250px;
- background-color: #333;
+ width: 270px;
+ background-color: #3d74c7;
padding: 20px;
box-sizing: border-box;
- border-right: 1px solid #444;
+ border-right: 1px solid white;
height: 100vh;
/* Занимает всю высоту экрана */
overflow-y: auto;
@@ -36,14 +36,15 @@ h2 {
justify-content: space-between;
align-items: center;
padding: 10px;
- background-color: #444;
+ background-color: #3d74c7;
border-radius: 5px;
+ border: 1px solid white;
cursor: pointer;
transition: background-color 0.3s ease;
}
.menu-item-header:hover {
- background-color: #222;
+ background-color: #195fc9;
}
.submenu {
@@ -57,8 +58,8 @@ h2 {
.tab {
padding: 10px;
- background-color: #444;
- border: 1px solid #333;
+ background-color: #3d74c7;
+ border: 1px solid white;
border-radius: 5px;
margin-bottom: 5px;
cursor: pointer;
@@ -66,5 +67,5 @@ h2 {
}
.tab:hover {
- background-color: #222;
+ background-color: #3d74c7;
}
\ No newline at end of file
diff --git a/src/Style/TreeTable.css b/src/Style/TreeTable.css
new file mode 100644
index 0000000..4549aee
--- /dev/null
+++ b/src/Style/TreeTable.css
@@ -0,0 +1,67 @@
+.tree-table {
+ max-width: 90vw; /* Ограничение ширины таблицы, чтобы не растягивалась */
+ min-width: 400px; /* Минимальная ширина для нормального отображения */
+ margin: 0 auto; /* Центрирование */
+ overflow-x: auto;
+ padding: 10px;
+ box-sizing: border-box;
+}
+
+.tree-table-header {
+ display: flex;
+ justify-content: space-around;
+ width: 100%;
+ padding-bottom: 10px;
+ border-bottom: 2px solid #ccc;
+}
+
+.tree-table-column {
+ flex: 1;
+ text-align: center;
+ min-width: 150px;
+ max-width: 100%;
+}
+
+.tree-table-title {
+ font-weight: bold;
+ font-size: 18px;
+ color: #333;
+}
+
+.tree-table-body {
+ display: flex;
+ justify-content: space-around;
+ width: 100%;
+ margin-top: 15px;
+}
+
+.tree-table-items {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 8px;
+ width: 100%;
+}
+
+/* Ограничение по ширине, чтобы элементы не растягивали таблицу */
+.tree-table-item {
+ width: 170px;
+ /* Фиксированная ширина для всех элементов */
+ height: 40px;
+ /* Фиксированная высота */
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ padding: 10px;
+ background-color: white;
+ border-radius: 5px;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+}
+
+.tree-table-item:hover {
+ transform: scale(1.05);
+ background: #f1f1f1;
+}
\ No newline at end of file
diff --git a/src/Style/common.css b/src/Style/common.css
new file mode 100644
index 0000000..cbc0f84
--- /dev/null
+++ b/src/Style/common.css
@@ -0,0 +1,43 @@
+/* src/Style/common.css */
+/* Вкладки */
+.tabs {
+ display: flex;
+ gap: 5px;
+ padding: 5px;
+ background-color: #3d74c7;
+ border-bottom: 2px solid #195fc9;
+ overflow-x: auto;
+ border-radius: 5px;
+ white-space: nowrap;
+}
+
+.tab {
+ display: flex;
+ align-items: center;
+ background-color: #3d74c7;
+ color: white;
+ padding: 5px 10px;
+ border-radius: 5px 5px 0 0;
+ cursor: pointer;
+ max-width: 250px;
+ min-width: 100px;
+ flex-shrink: 0;
+ position: relative;
+}
+
+.tab.active {
+ background-color: #195fc9;
+}
+
+.close-tab {
+ background: none;
+ border: none;
+ cursor: pointer;
+ font-size: 16px;
+ padding: 0;
+}
+
+.error {
+ color: red;
+ margin-bottom: 10px;
+}
\ No newline at end of file