affichage avancement ville

This commit is contained in:
Baptiste Rebillard 2022-08-03 14:19:19 +02:00
parent 49679bdde7
commit f7f3d93abe
3 changed files with 360 additions and 41 deletions

88
admin/com_ville.css Normal file
View file

@ -0,0 +1,88 @@
.cmv-progress {
color: white;
background-color: #333;
border-bottom: 2px solid #ccc;
}
h5.cmv-title {
font-size: 1.1em;
padding: 1em 1em 5px;
}
.cmv-container {
display:flex;
position:relative;
width:90%;
margin:auto;
height:100px;
}
.cmv-step {
position: relative;
width: 36px;
height: 36px;
background-color: #ccc;
color: black;
z-index: 5;
border-radius: 50%;
line-height: 36px;
text-align: center;
}
.cmv-step.fait, .cmv-step.active {
background-color: #06a6b7;
}
.cmv-step.active:before {
content: "";
position: absolute;
display: block;
background-color: white;
margin: 15%;
width: 70%;
height: 70%;
border-radius: 50%;
z-index: -15;
}
.cmv-way {
position: relative;
flex: 1;
}
.cmv-way.fait:before {
background-color: #06a6b7;
}
.cmv-way:before {
content: "";
display: block;
width: 120%; height: 1px;
margin-left: -10%;
margin-top: 17px;
background-color: #eee;
}
.cmv-fixed:before {
content: "";
width:1px; height: 7px;
background-color: white;
position: absolute;
top:42px;
left: 18px;
}
.cmv-fixed {
color: white;
width: 100%;
margin-top: 2px;
}
.cmv-relative {
content: "52m";
position: absolute;
color: white;
text-align: center;
width: 100%;
top: -10px;
}

View file

@ -170,5 +170,6 @@
</div> </div>
</body> </body>
</html> </html>

View file

@ -1,6 +1,8 @@
<?php <?php
include "script.php"; include "script.php";
$refresh_rate = 15; //refresh rate en seconde (en gros on refresh la page toute les 15sec)
if($user['perm'] < 1) { if($user['perm'] < 1) {
header('Location: deco.php'); header('Location: deco.php');
} }
@ -47,6 +49,7 @@ if(isset($_POST['reset2'])) {
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin / Com'ville</title> <title>Admin / Com'ville</title>
<link rel="stylesheet" type="text/css" href="com_ville.css" />
</head> </head>
<body> <body>
<main> <main>
@ -67,39 +70,150 @@ if(isset($_POST['reset2'])) {
?> ?>
<font color="green">Session non demarré, </font> <font color="green">Session non demarré, </font>
<form method="POST"> <form method="POST">
<input type="submit" name="start1" value="Démarrer la session" class="submit_ville"></form> <input type="submit" name="start1" value="Démarrer la session" class="submit_inline"></form>
</form> </form>
<?php <?php
} elseif($r[0]['state'] == 1) { } elseif($r[0]['state'] >= 1) {
if($r[0]['state'] == 1) {
?> ?>
<font color="orange">Session en cours, </font> <font color="orange">Session en cours, </font>
<form method="POST"> <form method="POST">
<input type="submit" name="stop1" value="Stopper la session" class="submit_ville"></form> <input type="submit" name="stop1" value="Stopper la session" class="submit_inline"></form>
</form> </form>
<META HTTP-EQUIV="Refresh" CONTENT="<?= $refresh_rate ?>">
<?php <?php
} elseif($r[0]['state'] == 2) { } elseif($r[0]['state'] == 2) {
?> ?>
<font color="red">Session terminé, </font> <font color="red">Session terminé, </font>
<form method="POST"> <form method="POST">
<input type="text" name="code" placeholder="anti-missclick" class="input_ville"> <input type="text" name="code" placeholder="anti-missclick" class="input_inline">
<input type="submit" name="reset1" value="Reset la session" class="submit_ville"></form> <input type="submit" name="reset1" value="Reset la session" class="submit_inline"></form>
</form> </form>
<?php <?php
} }
?> echo "<br><br><br>";
$reqsession = $db->query("SELECT state, time_begin FROM ville WHERE session = 1");
$rs = $reqsession -> fetchAll(PDO::FETCH_ASSOC);
<?php $reqe = $db->query('SELECT * FROM ville_equipe WHERE id < 17');
$reqint = $db->query('SELECT id, nom FROM ville_equipe WHERE id < 17'); while($e = $reqe->fetch()) {
while($equipe = $reqint->fetch()) { $temps_init = $e["temps"];
?> $tab_time = NULL;
$tab_time = explode(";", $temps_init);
$temps_begin = date("H:i:s",$rs[0]['time_begin']);
<?php if($temps_init == NULL) {
$avancement = (int) 0;
$delta_time_0 = gmdate("H:i:s",time()-$rs[0]['time_begin']);
} else {
$avancement = count($tab_time);
$def_time = $tab_time[$avancement-1] - $rs[0]['time_begin'];
$delta_time_0 = gmdate("H:i:s",$tab_time['0']-$rs[0]['time_begin']);
} }
//node 0
?> ?>
<div class="cmv-progress">
<h5 id="cmv-title" class="cmv-title">Equipe <?= $e['nom'] ?></h5>
<div class="cmv-container">
<div class="cmv-step fait">0
<div class="cmv-fixed"><?= $temps_begin ?></div> <!-- avec "--:--" = heure de départ -->
</div>
<div class="cmv-way fait">
<div class="cmv-relative"><?= $delta_time_0 ?></div>
</div>
<?php <?php
/** Pour une équipe donnée */
/** $depart : Le point de départ de cette équipe */
$depart = $e['begin'];
/** $etape : À quelle étape en est cette équipe, si on l'utilise il faut décommenter quelques ligne plus bas : "$current = $etape - $depart + 1;" et commenter "$current = $avancement+1;" */
//$etape = 1;
/** $i va de 1 à 17 (inclus), 17 étant le nombre d'étapes */
for ($i = 1; $i <= 17; $i++) {
/** $node : Le numéro dans la node à l'emplacement $i
* exemple : si une équipe commence au point 7 alors la première node ($i = 1)
* va contenir $node = 7 À UTILISER POUR LES TEMPS ! */
$node = ($i + $depart - 2) % 17 + 1;
/** $current : À quel index est placé la node correspondante à l'$etape
* exemple : une équipe qui commence au point 17 en est au point 3,
* elle est donc affichée comme étant au niveau de la node d'index 4 ($i = 4)
* puisque de gauche à droite les premières nodes sont 17 - 1 - 2 - 3 */
//$current = $etape - $depart + 1;
$current = $avancement+1;
if ($current < 0) {
$current = $current + 17;
}
/** Si le point $i a été fait (fait), est en train d'être fait (actuel), ou n'a pas encore été atteint */
$state = '';
if ($i < $current) {
$state = ' fait';
} elseif ($i === $current) {
$state = ' active';
}
echo '<div class="cmv-step'.$state.'">';
echo $node;
if ($i <= $current) {
// --:-- doit être remplacé par l'heure à laquelle le point $node a été atteint
if($i == $current) {
echo '<div class="cmv-fixed">'.date("H:i:s",time()).'</div>';
} else {
echo '<div class="cmv-fixed">'.date("H:i:s",$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
if ($i < 17) {
echo '<div class="cmv-way'.$state.'">';
if ($i < $current) {
if($i < $current-1) {
echo '<div class="cmv-relative">'.gmdate("H:i:s",$tab_time[$i]-$tab_time[$i-1]).'</div>'; // --mn doit être remplacé par le deltaT entre les points $node et $node+1
} else {
echo '<div class="cmv-relative">'.gmdate("H:i:s",time()-$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
}
}
?>
</div>
</div>
<?php
} //fin du while e
}
} elseif($session == 2) { } elseif($session == 2) {
?> ?>
<a href="ville.php?session=1" class="href_session">Session matin</a> <a href="ville.php?session=1" class="href_session">Session matin</a>
<a href="ville.php?session=2" class="href_session_selected">Session aprem</a> <a href="ville.php?session=2" class="href_session_selected">Session aprem</a>
@ -112,43 +226,159 @@ if(isset($_POST['reset2'])) {
?> ?>
<font color="green">Session non demarré, </font> <font color="green">Session non demarré, </font>
<form method="POST"> <form method="POST">
<input type="submit" name="start2" value="Démarrer la session" class="submit_ville"></form> <input type="submit" name="start2" value="Démarrer la session" class="submit_inline"></form>
</form> </form>
<?php <?php
} elseif($r[0]['state'] == 1) { } elseif($r[0]['state'] >= 1) {
if($r[0]['state'] == 1) {
?> ?>
<font color="orange">Session en cours, </font> <font color="orange">Session en cours, </font>
<form method="POST"> <form method="POST">
<input type="submit" name="stop2" value="Stopper la session" class="submit_ville"></form> <input type="submit" name="stop2" value="Stopper la session" class="submit_inline"></form>
</form> </form>
<META HTTP-EQUIV="Refresh" CONTENT="<?= $refresh_rate ?>">
<?php <?php
} elseif($r[0]['state'] == 2) { } elseif($r[0]['state'] == 2) {
?> ?>
<font color="red">Session terminé, </font> <font color="red">Session terminé, </font>
<form method="POST"> <form method="POST">
<input type="text" name="code" placeholder="anti-missclick" class="input_ville"> <input type="text" name="code" placeholder="anti-missclick" class="input_inline">
<input type="submit" name="reset2" value="Reset la session" class="submit_ville"></form> <input type="submit" name="reset2" value="Reset la session" class="submit_inline"></form>
</form> </form>
<?php <?php
} }
echo "<br><br><br>";
$reqsession = $db->query("SELECT state, time_begin FROM ville WHERE session = 2");
$rs = $reqsession -> fetchAll(PDO::FETCH_ASSOC);
$reqe = $db->query('SELECT * FROM ville_equipe WHERE id > 16');
while($e = $reqe->fetch()) {
$temps_init = $e["temps"];
$tab_time = NULL;
$tab_time = explode(";", $temps_init);
$temps_begin = date("H:i:s",$rs[0]['time_begin']);
if($temps_init == NULL) {
$avancement = (int) 0;
$delta_time_0 = gmdate("H:i:s",time()-$rs[0]['time_begin']);
} else {
$avancement = count($tab_time);
$def_time = $tab_time[$avancement-1] - $rs[0]['time_begin'];
$delta_time_0 = gmdate("H:i:s",$tab_time['0']-$rs[0]['time_begin']);
}
//node 0
?> ?>
<div class="cmv-progress">
<h5 id="cmv-title" class="cmv-title">Equipe <?= $e['nom'] ?></h5>
<div class="cmv-container">
<div class="cmv-step fait">0
<div class="cmv-fixed"><?= $temps_begin ?></div> <!-- avec "--:--" = heure de départ -->
</div>
<div class="cmv-way fait">
<div class="cmv-relative"><?= $delta_time_0 ?></div>
</div>
<?php <?php
/** Pour une équipe donnée */
/** $depart : Le point de départ de cette équipe */
$depart = $e['begin'];
/** $etape : À quelle étape en est cette équipe, si on l'utilise il faut décommenter quelques ligne plus bas : "$current = $etape - $depart + 1;" et commenter "$current = $avancement+1;" */
//$etape = 1;
/** $i va de 1 à 17 (inclus), 17 étant le nombre d'étapes */
for ($i = 1; $i <= 17; $i++) {
/** $node : Le numéro dans la node à l'emplacement $i
* exemple : si une équipe commence au point 7 alors la première node ($i = 1)
* va contenir $node = 7 À UTILISER POUR LES TEMPS ! */
$node = ($i + $depart - 2) % 17 + 1;
/** $current : À quel index est placé la node correspondante à l'$etape
* exemple : une équipe qui commence au point 17 en est au point 3,
* elle est donc affichée comme étant au niveau de la node d'index 4 ($i = 4)
* puisque de gauche à droite les premières nodes sont 17 - 1 - 2 - 3 */
//$current = $etape - $depart + 1;
$current = $avancement+1;
if ($current < 0) {
$current = $current + 17;
}
/** Si le point $i a été fait (fait), est en train d'être fait (actuel), ou n'a pas encore été atteint */
$state = '';
if ($i < $current) {
$state = ' fait';
} elseif ($i === $current) {
$state = ' active';
}
echo '<div class="cmv-step'.$state.'">';
echo $node;
if ($i <= $current) {
// --:-- doit être remplacé par l'heure à laquelle le point $node a été atteint
if($i == $current) {
echo '<div class="cmv-fixed">'.date("H:i:s",time()).'</div>';
} else { } else {
heade('Location: ../error.php'); echo '<div class="cmv-fixed">'.date("H:i:s",$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
if ($i < 17) {
echo '<div class="cmv-way'.$state.'">';
if ($i < $current) {
if($i < $current-1) {
echo '<div class="cmv-relative">'.gmdate("H:i:s",$tab_time[$i]-$tab_time[$i-1]).'</div>'; // --mn doit être remplacé par le deltaT entre les points $node et $node+1
} else {
echo '<div class="cmv-relative">'.gmdate("H:i:s",time()-$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
}
}
?>
</div>
</div>
<?php
} //fin du while e
}
} else {
header('Location: ../error.php');
} }
} else { } else {
?> ?>