Commit e9619574 by JonathanMM

Affichage des dernières actualisations sur la carte

parent 12e7e395
......@@ -130,6 +130,10 @@ switch($_GET['action'])
echo json_encode(getSignalementCarte($idConso));
exit();
break;
case 'getEtatCarte':
echo json_encode(getEtatCarte());
exit();
break;
}
function getBikeInstantane($codeStation)
......@@ -1138,4 +1142,142 @@ function getSignalementCarte($idConso)
return $svg;
}
function getDataEtat()
{
global $pdo;
$repere = new DateTime("-6hours");
$requete = $pdo->query('SELECT * FROM stations');
$stationsData = $requete->fetchAll();
$stations = array();
foreach($stationsData as $station)
{
$lastRefresh = $station['lastRefresh'];
$objStation = array('code' => $station['code'], 'name' => $station['name'], 'latitude' => $station['latitude'], 'longitude' => $station['longitude'], 'insee' => $station['insee']);
if(is_null($lastRefresh))
$objStation['etat'] = null;
else
{
if((new DateTime($lastRefresh)) < $repere) //Pas de mise à jour depuis 6h
$objStation['etat'] = false;
else
$objStation['etat'] = true;
}
$stations[] = $objStation;
}
return $stations;
}
function getEtatCarte()
{
global $pdo;
$stations = getDataEtat();
$liste_communes = array();
$objets = array();
define('ETAT_INCONNU', 0);
define('ETAT_FONCTIONNE', 1);
define('ETAT_NON_FONCTIONNE', 2);
$couleur_etat=array(
ETAT_INCONNU=>'lightgray',
ETAT_FONCTIONNE=>'ForestGreen',
ETAT_NON_FONCTIONNE=>'FireBrick'
);
$nombre_etat=array(
ETAT_INCONNU=>0,
ETAT_FONCTIONNE=>0,
ETAT_NON_FONCTIONNE=>0,
);
foreach($stations as $station)
{
$code = $station['code'];
if(is_null($station['etat']))
{
$etat = ETAT_INCONNU;
$s_info1 = 'Pas d\'information sur l\'état des données';
} elseif($station['etat'])
{
$etat = ETAT_FONCTIONNE;
$s_info1 = 'Données actualisés récemment';
} else
{
$etat = ETAT_NON_FONCTIONNE;
$s_info1 = 'Données non reçus depuis un moment';
}
//forme en fonction de l'état annoncé
if($etat == ETAT_INCONNU)
{
$s_point='rond';
$s_taille=6;
$s_angle=0;
}
else
{
$s_point='carre';
$s_taille=6;
$s_angle=45;
}
//comptage du nombre de stations par etat
$nombre_etat[$etat]++;
//récupération de la commune correspondant à la station (d'après son numéro)
$inseeCommune = $station['insee'];
//ajout à la liste des communes
if(!is_null($inseeCommune) && !in_array($inseeCommune,$liste_communes))
{
$liste_communes[] = $inseeCommune;
}
$objets[]=array(
'nature'=>'point',
'point'=>$s_point,
'taille'=>$s_taille,
'angle'=>$s_angle,
'couleur'=>$couleur_etat[$etat],
'lon'=>$station['longitude'],
'lat'=>$station['latitude'],
'lien'=>'station.php?code='.$code,
'info'=>'Station '.displayCodeStation($code)."\n".$station['name']."\n".$s_info1
);
}
//légende (point et texte, affiché uniquement pour les états ayant au moins une station
if($nombre_etat[ETAT_INCONNU])
{
$objets[]=array('point'=>'rond','x'=>-58,'y'=>10,'taille'=>6,'angle'=>0,
'couleur'=>$couleur_etat[ETAT_INCONNU]);
$objets[]=array('nature'=>'texte','x'=>-60,'y'=>20,'taille'=>12,'angle'=>90,'align'=>'l',
'texte'=>'État des données inconnu ('.$nombre_etat[ETAT_INCONNU].')');
}
if($nombre_etat[ETAT_NON_FONCTIONNE])
{
$objets[]=array('point'=>'carre','x'=>-18,'y'=>210,'taille'=>6,'angle'=>45,
'couleur'=>$couleur_etat[ETAT_NON_FONCTIONNE]);
$objets[]=array('nature'=>'texte','x'=>-20,'y'=>220,'taille'=>12,'angle'=>90,'align'=>'l',
'texte'=>'Données vieilles ('.$nombre_etat[ETAT_NON_FONCTIONNE].')');
}
if($nombre_etat[ETAT_FONCTIONNE])
{
$objets[]=array('point'=>'carre','x'=>-18,'y'=>10,'taille'=>6,'angle'=>45,
'couleur'=>$couleur_etat[ETAT_FONCTIONNE]);
$objets[]=array('nature'=>'texte','x'=>-20,'y'=>20,'taille'=>12,'angle'=>90,'align'=>'l',
'texte'=>'Données fraîches ('.$nombre_etat[ETAT_FONCTIONNE].')');
}
$svg = genererCarteSVG(800, 500, $liste_communes, 'commune.php?insee=', '', '', $objets,COMMUNE_AVM_VELIB);
return $svg;
}
?>
......@@ -40,7 +40,7 @@
</form>
<a href="http://www.ousontlesvelib.ovh/stations">Suivre l'avancement de l'ouverture des stations &gt;&gt;</a><br />
<a href="stats.php">Voir plus de statistiques &gt;</a><br />
<a id="toggle-carte">Voir carte des signalements</a>
Carte : <a id="btn-carte-etat">Stations</a> | <a id="btn-carte-signalement">Signalement</a> | <a id="btn-carte-data">Actualisation des données</a>
</div>
<div id="carteArea"></div>
</div>
......@@ -175,8 +175,10 @@
filtreDataTable();
$("#filtreEtat").change(filtreDataTable);
$("#filtrePosition").change(filtrePosition);
toggleCarte();
$('#toggle-carte').click(toggleCarte);
$('#btn-carte-etat').click(voirCarteEtat);
$('#btn-carte-signalement').click(voirCarteSignalement);
$('#btn-carte-data').click(voirCarteData);
voirCarteEtat();
});
function filtrePosition()
......@@ -215,21 +217,19 @@
});
}
var carte = -1;
function toggleCarte()
function voirCarteEtat()
{
if(carte == 0)
{
//On passe sur la carte des signalements
carte = 1;
recupererCarte('api.php?action=getSignalementCarte&idConso={$idConso}');
$('#toggle-carte').html('Voir la carte des états des stations');
} else {
//On passe sur la carte des états
carte = 0;
recupererCarte('api.php?action=getCommunesCarte&idConso={$idConso}');
$('#toggle-carte').html('Voir la carte des signalements');
}
recupererCarte('api.php?action=getCommunesCarte&idConso={$idConso}');
}
function voirCarteSignalement()
{
recupererCarte('api.php?action=getSignalementCarte&idConso={$idConso}');
}
function voirCarteData()
{
recupererCarte('api.php?action=getEtatCarte&idConso={$idConso}');
}
</script>
</div>
......
......@@ -101,7 +101,7 @@ ul
margin-left: 2em;
}
#toggle-carte
#btn-carte-etat, #btn-carte-signalement, #btn-carte-data
{
cursor: pointer;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment