+
+
{localZoneSettings && Change zone type }
{localZoneSettings && localZoneSettings.type == zoneTypes.circle &&
-
changeZoneSettings(localZoneSettings)}/>
+
}
{localZoneSettings && localZoneSettings.type == zoneTypes.polygon &&
- changeZoneSettings(localZoneSettings)}/>
+
}
diff --git a/traque-front/components/input.jsx b/traque-front/components/input.jsx
index aae9661..94aed9d 100644
--- a/traque-front/components/input.jsx
+++ b/traque-front/components/input.jsx
@@ -1,13 +1,12 @@
-import React from 'react'
+const className = "block w-full h-full p-4 rounded text-center ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600";
export function TextInput({...props}) {
return (
-
+
)
}
-
export function TextArea({...props}) {
return (
-
+
)
}
diff --git a/traque-front/context/adminContext.jsx b/traque-front/context/adminContext.jsx
index ed3e938..8b4ad63 100644
--- a/traque-front/context/adminContext.jsx
+++ b/traque-front/context/adminContext.jsx
@@ -1,44 +1,52 @@
"use client";
-import { createContext, useContext, useEffect, useMemo, useState } from "react";
+import { createContext, useContext, useMemo, useState } from "react";
import { useSocket } from "./socketContext";
import useSocketListener from "@/hook/useSocketListener";
-import { useAdminConnexion } from "./adminConnexionContext";
import { GameState } from "@/util/gameState";
const adminContext = createContext();
export function AdminProvider({ children }) {
- const [teams, setTeams] = useState([]);
- const [zoneSettings, setZoneSettings] = useState(null)
- const [penaltySettings, setPenaltySettings] = useState(null);
- const [gameSettings, setGameSettings] = useState(null);
- const [zoneExtremities, setZoneExtremities] = useState(null);
- const [nextZoneDate, setNextZoneDate] = useState(null);
const { adminSocket } = useSocket();
- const { loggedIn } = useAdminConnexion();
+ // teams
+ const [teams, setTeams] = useState([]);
+ // game_state
const [gameState, setGameState] = useState(GameState.SETUP);
const [startDate, setStartDate] = useState(null);
+ // current_zone
+ const [zoneType, setZoneType] = useState(null);
+ const [zoneExtremities, setZoneExtremities] = useState(null);
+ const [nextZoneDate, setNextZoneDate] = useState(null);
+ // settings
+ const [messages, setMessages] = useState(null);
+ const [zoneSettings, setZoneSettings] = useState(null)
+ const [sendPositionDelay, setSendPositionDelay] = useState(null);
+ const [outOfZoneDelay, setOutOfZoneDelay] = useState(null);
- // Send a request to get the teams when the user logs in
- useEffect(() => {
- adminSocket.emit("get_teams");
- }, [loggedIn]);
+ useSocketListener(adminSocket, "teams", setTeams);
- function setCurrentZone(data) {
+ useSocketListener(adminSocket, "game_state", (data) => {
+ setGameState(data.state);
+ setStartDate(data.date)
+ });
+
+ useSocketListener(adminSocket, "current_zone", (data) => {
+ setZoneType(data.type);
setZoneExtremities({begin: data.begin, end: data.end});
setNextZoneDate(data.endDate);
- }
+ });
- useSocketListener(adminSocket, "game_state", (data) => {setGameState(data.state); setStartDate(data.startDate)});
- useSocketListener(adminSocket, "teams", setTeams);
- useSocketListener(adminSocket, "zone_settings", setZoneSettings);
- useSocketListener(adminSocket, "game_settings", setGameSettings);
- useSocketListener(adminSocket, "penalty_settings", setPenaltySettings);
- useSocketListener(adminSocket, "current_zone", setCurrentZone);
+ useSocketListener(adminSocket, "settings", (data) => {
+ setMessages(data.messages);
+ setZoneSettings(data.zone);
+ setSendPositionDelay(data.sendPositionDelay);
+ setOutOfZoneDelay(data.outOfZoneDelay);
+ });
const value = useMemo(() => (
- { zoneExtremities, teams, zoneSettings, penaltySettings, gameSettings, gameState, nextZoneDate, startDate }
- ), [zoneSettings, teams, gameState, zoneExtremities, penaltySettings, gameSettings, nextZoneDate, startDate]);
+ { zoneSettings, teams, gameState, zoneType, zoneExtremities, sendPositionDelay, outOfZoneDelay, messages, nextZoneDate, startDate }
+ ), [zoneSettings, teams, gameState, zoneType, zoneExtremities, sendPositionDelay, outOfZoneDelay, messages, nextZoneDate, startDate]);
+
return (
{children}
diff --git a/traque-front/hook/useAdmin.jsx b/traque-front/hook/useAdmin.jsx
index b141efe..bf267dd 100644
--- a/traque-front/hook/useAdmin.jsx
+++ b/traque-front/hook/useAdmin.jsx
@@ -7,19 +7,10 @@ export default function useAdmin() {
const { teams } = adminContext;
const { adminSocket } = useSocket();
- function pollTeams() {
- adminSocket.emit("get_teams");
- }
-
function getTeam(teamId) {
return teams.find(team => team.id === teamId);
}
- function getTeamName(teamId) {
- let team = getTeam(teamId);
- return team ? team.name : "";
- }
-
function reorderTeams(newOrder) {
adminSocket.emit("reorder_teams", newOrder);
}
@@ -40,17 +31,9 @@ export default function useAdmin() {
adminSocket.emit("change_state", state);
}
- function changeZoneSettings(zone) {
- adminSocket.emit("set_zone_settings", zone);
+ function updateSettings(settings) {
+ adminSocket.emit("update_settings", settings);
}
- function changePenaltySettings(penalties) {
- adminSocket.emit("set_penalty_settings", penalties);
- }
-
- function changeGameSettings(settings) {
- adminSocket.emit("set_game_settings", settings);
- }
- return { ...adminContext, changeGameSettings, changeZoneSettings, changePenaltySettings, pollTeams, getTeam, getTeamName, reorderTeams, addTeam, removeTeam, changeState, updateTeam };
-
+ return { ...adminContext, getTeam, reorderTeams, addTeam, removeTeam, updateTeam, changeState, updateSettings };
}
diff --git a/traque-front/hook/useLocalVariable.jsx b/traque-front/hook/useLocalVariable.jsx
new file mode 100644
index 0000000..55b8e67
--- /dev/null
+++ b/traque-front/hook/useLocalVariable.jsx
@@ -0,0 +1,15 @@
+import { useState, useEffect } from "react";
+
+export default function useLocalVariable(variable, setVariable) {
+ const [localVariable, setLocalVariable] = useState(variable);
+
+ useEffect(() => {
+ setLocalVariable(variable);
+ }, [variable]);
+
+ function applyLocalVariable() {
+ setVariable(localVariable);
+ }
+
+ return [localVariable, setLocalVariable, applyLocalVariable];
+}