-
Устройства
-
setDeviceName(e.target.value)}
- />
-
setDeviceStatus(e.target.value)}
- />
-
-
-
- Название |
- Статус |
- QR Код |
- Действия |
-
-
-
- {devices.map((device) => (
- setSelectedDevice(device)}>
- {device.name} |
- {device.status} |
- {generateQR(device)} |
-
-
- |
-
- ))}
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
- );
+ )
};
export default Devices;
\ No newline at end of file
diff --git a/src/frontend/src/pages/Main.js b/src/frontend/src/pages/Main.js
new file mode 100644
index 0000000..7c7f9bf
--- /dev/null
+++ b/src/frontend/src/pages/Main.js
@@ -0,0 +1,35 @@
+import React from 'react';
+import '../Main.css';
+import { InfoBlock } from './components/DroneAssets/InfoBlock';
+
+const Main = () => {
+
+ const makeSimulation = () => {
+ // POST $BASE_ADDR/createSimulation?userToken=?
+ }
+
+ const connectSimulation = () => {
+ // POST $BASE_ADDR/connectSimulation?userToken=?
+ }
+
+ return (
+
+
+
+
+
Создать новую симуляцию
+
+
+
+
Присоединиться к моделированию
+
+
Расчет полета до камчатки
+
+
+
+
+
+ )
+};
+
+export default Main;
diff --git a/src/frontend/src/pages/PrevCalc.js b/src/frontend/src/pages/PrevCalc.js
index 6805ee6..d4c839e 100644
--- a/src/frontend/src/pages/PrevCalc.js
+++ b/src/frontend/src/pages/PrevCalc.js
@@ -2,83 +2,25 @@ import React, { useState } from 'react';
import '../UserAccount.scss';
const PrevCalc = () => {
- const [userData, setUserData] = useState({
- username: 'Мамут Рахал',
- email: 'yatupoidayn@mail.ru',
- phone: '+666',
- });
-
- const [isEditing, setIsEditing] = useState(false);
- const [formData, setFormData] = useState(userData);
-
- const handleChange = (e) => {
- const { name, value } = e.target;
- setFormData((prevData) => ({
- ...prevData,
- [name]: value,
- }));
- };
-
- const handleSave = () => {
- setUserData(formData);
- setIsEditing(false);
- };
-
- const handleCancel = () => {
- setFormData(userData);
- setIsEditing(false);
- };
-
+
return (
-
-
Данные
-
- {isEditing ? (
-
- ) : (
-
-
Имя: {userData.username}
-
Email: {userData.email}
-
Телефон: {userData.phone}
-
-
- )}
-
- );
+
+
+ UID |
+ Имя |
+ Пользователь |
+ Время начала |
+ Время конца |
+
+
+ 1 |
+ Калькуляция полета до варшавы |
+ Гитлер |
+ 1:00 |
+ 4:04 |
+
+
+ )
};
export default PrevCalc;
\ No newline at end of file
diff --git a/src/frontend/src/pages/UserAccount.js b/src/frontend/src/pages/UserAccount.js
index 1b24d19..45f6ac7 100644
--- a/src/frontend/src/pages/UserAccount.js
+++ b/src/frontend/src/pages/UserAccount.js
@@ -3,8 +3,8 @@ import '../UserAccount.scss';
const UserAccount = () => {
const [userData, setUserData] = useState({
- username: 'Мамут Рахал',
- email: 'yatupoidayn@mail.ru',
+ username: 'Никита Николаевич',
+ email: 'moxitech@moxitech.com',
phone: '+666',
});
@@ -30,7 +30,7 @@ const UserAccount = () => {
};
return (
-
+
Данные
{isEditing ? (
diff --git a/src/frontend/src/pages/components/DroneAssets/InfoBlock.js b/src/frontend/src/pages/components/DroneAssets/InfoBlock.js
new file mode 100644
index 0000000..bc18b2a
--- /dev/null
+++ b/src/frontend/src/pages/components/DroneAssets/InfoBlock.js
@@ -0,0 +1,35 @@
+
+import React from "react"
+
+export const InfoBlock = () => {
+ return(
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/frontend/src/pages/service/Local.js b/src/frontend/src/pages/service/Local.js
new file mode 100644
index 0000000..68d1eea
--- /dev/null
+++ b/src/frontend/src/pages/service/Local.js
@@ -0,0 +1,10 @@
+
+
+
+export const LocalSimulationJson = () => {
+
+
+ return {
+ "TODO": "JSON RETURN"
+ }
+}
\ No newline at end of file
diff --git a/src/frontend/src/pages/service/Server.js b/src/frontend/src/pages/service/Server.js
new file mode 100644
index 0000000..cd1c0e0
--- /dev/null
+++ b/src/frontend/src/pages/service/Server.js
@@ -0,0 +1,40 @@
+
+
+
+export const giveMeServerAddress = () => {
+ if (process.env.SERVER_BASE_ADDRESS) {
+ return process.env.SERVER_BASE_ADDRESS
+ }
+ return "http://localhost:3000";
+}
+
+export const ServerRequest = async (req, type, data = null) => {
+ let addr = giveMeServerAddress(); // получаем адрес сервера
+ let options = {
+ method: type, // тип запроса (GET, POST, PUT, DELETE и т.д.)
+ headers: {
+ 'Content-Type': 'application/json', // заголовки для JSON данных
+ }
+ };
+
+ // Если данные есть и метод не GET, добавляем тело запроса
+ if (data && type !== 'GET') {
+ options.body = JSON.stringify(data);
+ }
+
+ try {
+ const response = await fetch(`${addr}/${req}`, options); // выполняем запрос
+ const responseData = await response.json(); // парсим JSON ответ
+
+ return {
+ data: responseData, // данные от сервера
+ status: response.status // код состояния ответа
+ };
+ } catch (error) {
+ console.error('Error:', error);
+ return {
+ data: null, // если ошибка, данных нет
+ status: 500 // возвращаем код ошибки сервера
+ };
+ }
+};
diff --git a/src/frontend/src/pages/service/SimulationRequests.js b/src/frontend/src/pages/service/SimulationRequests.js
new file mode 100644
index 0000000..f5e5898
--- /dev/null
+++ b/src/frontend/src/pages/service/SimulationRequests.js
@@ -0,0 +1,21 @@
+
+import {ServerRequest} from './Server'
+
+export const RequestSaveOnServer = () => {
+ // Запрос на сохранение результатов на сервере
+}
+
+
+export const RequestRunCalculations = () => {
+ // Запрос на сохранение результатов на запуск вычислений
+}
+
+export const RequestGetClientSettings = () => {
+ // Запрос на получение клиентских настроек
+
+}
+
+export const RequestUpdateClientSettings = () => {
+ // Запрос на обновление клиентских настроек
+
+}
\ No newline at end of file
diff --git a/src/server/internal/server/server.go b/src/server/internal/server/server.go
index e8082f9..b7bb70e 100644
--- a/src/server/internal/server/server.go
+++ b/src/server/internal/server/server.go
@@ -57,7 +57,7 @@ func CreateSocket(c *websocket.Conn) {
fmt.Printf("Received message from user %s: %s\n", userToken, msg)
// Отправляем обратно сообщение клиенту
- err = c.WriteMessage(websocket.BinaryMessage, msg)
+ err = c.WriteMessage(websocket.TextMessage, msg)
if err != nil {
fmt.Printf("Error writing message: %v\n", err)
break