- {gameState == GameState.PLAYING &&
{`Next zone in : ${formatTime(timeLeftNextZone)}`}
}
+
{isFocusing && }
setIsFocusing(false)}/>
@@ -60,12 +61,21 @@ export default function LiveMap({ selectedTeamId, onSelected, isFocusing, setIsF
-
+
onSelected(team.id)} display={!team.captured}>
)}
+ { gameState == GameState.PLAYING &&
+
+
Durée zone
+
{formatTime(timeLeftNextZone)}
+
+ }
+
)
}
diff --git a/traque-front/app/admin/components/teamSidePanel.jsx b/traque-front/app/admin/components/teamSidePanel.jsx
index 95ead05..7797c72 100644
--- a/traque-front/app/admin/components/teamSidePanel.jsx
+++ b/traque-front/app/admin/components/teamSidePanel.jsx
@@ -2,8 +2,7 @@ import { env } from 'next-runtime-env';
import { useEffect, useState } from "react";
import useAdmin from "@/hook/useAdmin";
import { getStatus } from '@/util/functions';
-import { Colors } from '@/util/types';
-import { teamStatus } from '@/util/configurations';
+import { Colors, GameState } from '@/util/types';
function DotLine({ label, value }) {
return (
@@ -32,6 +31,7 @@ function IconValue({ color, icon, value }) {
export default function TeamSidePanel({ selectedTeamId, onClose }) {
const { getTeam, startDate, gameState } = useAdmin();
const [imgSrc, setImgSrc] = useState("");
+ const [_, setRefreshKey] = useState(0);
const team = getTeam(selectedTeamId);
const NO_VALUE = "XX";
const NEXT_PUBLIC_SOCKET_HOST = env("NEXT_PUBLIC_SOCKET_HOST");
@@ -43,6 +43,14 @@ export default function TeamSidePanel({ selectedTeamId, onClose }) {
if (!team) return null;
+ useEffect(() => {
+ const interval = setInterval(() => {
+ setRefreshKey(prev => prev + 1);
+ }, 1000);
+
+ return () => clearInterval(interval);
+ }, []);
+
function formatTime(startDate, endDate) {
// startDate in milliseconds
if (endDate == null || startDate == null || startDate < 0) return NO_VALUE + ":" + NO_VALUE;
@@ -92,18 +100,22 @@ export default function TeamSidePanel({ selectedTeamId, onClose }) {
-
diff --git a/traque-front/app/admin/login/page.js b/traque-front/app/admin/login/page.js
index 682ebd9..eedfd1e 100644
--- a/traque-front/app/admin/login/page.js
+++ b/traque-front/app/admin/login/page.js
@@ -17,9 +17,9 @@ export default function AdminLoginPage() {
return (
);
diff --git a/traque-front/app/admin/page.js b/traque-front/app/admin/page.js
index 80c881a..31668de 100644
--- a/traque-front/app/admin/page.js
+++ b/traque-front/app/admin/page.js
@@ -45,7 +45,7 @@ export default function AdminPage() {
const [mapStyle, setMapStyle] = useState(mapStyles.default);
const [showZones, setShowZones] = useState(true);
const [showNames, setShowNames] = useState(true);
- const [showArrows, setShowArrows] = useState(false);
+ const [showArrows, setShowArrows] = useState(true);
const [isFocusing, setIsFocusing] = useState(true);
useProtect();
diff --git a/traque-front/app/admin/parameters/components/circleZoneSelector.jsx b/traque-front/app/admin/parameters/components/circleZoneSelector.jsx
index ef8c9fc..f84f0ee 100644
--- a/traque-front/app/admin/parameters/components/circleZoneSelector.jsx
+++ b/traque-front/app/admin/parameters/components/circleZoneSelector.jsx
@@ -89,21 +89,21 @@ export default function CircleZoneSelector({ display }) {
- {editMode == EditMode.MIN &&
}
- {editMode == EditMode.MAX &&
}
+ {editMode == EditMode.MAX &&
}
+ {editMode == EditMode.MIN &&
}
-
Reduction number
+
Nombre de rétrécissements
-
Zone duration
+
Durée d'une zone
-
Timeout
+
Temps permis hors zone
-
+
>}
diff --git a/traque-front/app/admin/parameters/components/messages.jsx b/traque-front/app/admin/parameters/components/messages.jsx
index e67ca89..1a1362c 100644
--- a/traque-front/app/admin/parameters/components/messages.jsx
+++ b/traque-front/app/admin/parameters/components/messages.jsx
@@ -20,7 +20,7 @@ export default function Messages() {
};
return (
-