Commit 90d768cd authored by JonathanMM's avatar JonathanMM

Merge branch 'master'

Conflicts:
	stats.php
	stats.tpl
parents d3e8ffc6 5ff794cb
......@@ -10,3 +10,4 @@ script/fixStation.py
templates_c/*
!templates_c/README.md
script/fixInseeStation.py
/script/velibLib.pyc
......@@ -822,12 +822,12 @@ function getCommunesCarte($idConso)
define('BORNES_OUI', 20);
$couleur_etat=array(
BORNES_NON+ETAT_INCONNU=>'mediumvioletred',
BORNES_NON+ETAT_TRAVAUX=>'darkred',
BORNES_NON+ETAT_OUVERTE=>'slateblue',
BORNES_OUI+ETAT_INCONNU=>'indigo',
BORNES_OUI+ETAT_TRAVAUX=>'darkorange',
BORNES_OUI+ETAT_OUVERTE=>'darkgreen'
BORNES_NON+ETAT_INCONNU=>'DodgerBlue',
BORNES_NON+ETAT_TRAVAUX=>'FireBrick',
BORNES_NON+ETAT_OUVERTE=>'Coral',
BORNES_OUI+ETAT_INCONNU=>'MediumOrchid',
BORNES_OUI+ETAT_TRAVAUX=>'DarkTurquoise',
BORNES_OUI+ETAT_OUVERTE=>'Green'
);
$nombre_etat=array(
......@@ -844,6 +844,7 @@ function getCommunesCarte($idConso)
//interprétation de l'état de la station 0=état non prévu
switch($station['state'])
{
case 'En travaux':
case 'Work in progress':
$etat = ETAT_TRAVAUX;
break;
......@@ -964,7 +965,7 @@ function getCommunesCarte($idConso)
'texte'=>'Stations en service ('.$nombre_etat[BORNES_OUI+ETAT_OUVERTE].')');
}
$svg = genererCarteSVG(800, 500, $liste_communes, 'commune.php?insee=', '', '', $objets);
$svg = genererCarteSVG(800, 500, $liste_communes, 'commune.php?insee=', '', '', $objets,COMMUNE_AVM_VELIB);
return $svg;
}
......
......@@ -47,8 +47,16 @@
* r = droite
*
*/
/*ÉTAT DE LA COMMUNE DANS LE SYNDICAT AUTOLIB VELIB METROPOLE*/
define('COMMUNE_AVM_NON',0);
define('COMMUNE_AVM_AUTOLIB',1);
define('COMMUNE_AVM_VELIB',2);
define('COMMUNE_AVM_AUTOLIB_VELIB',3);
function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
$liens='',$info=array(),$couleur=array(),$objets=array())
$liens='',$info=array(),$couleur=array(),$objets=array(),$avm=0)
{
global $pdo;
......@@ -169,8 +177,18 @@ function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
/****** RECUPERATION DE LA LISTE DES COMMUNES VISIBLES SUR LA CARTE ***********/
//récupération des communes au moins partiellement sur la carte
$requete=$pdo->query('SELECT * FROM commune WHERE ouest<="'.$data_E.'"
AND est>="'.$data_W.'" AND nord>="'.$data_S.'" AND sud<="'.$data_N.'"');
if($avm)
{
$requete=$pdo->query('SELECT * FROM commune WHERE avm&'.$avm.'!=0
AND ouest<='.$data_E.' AND est>='.$data_W.'
AND nord>='.$data_S.' AND sud<='.$data_N);
}
else
{
$requete=$pdo->query('SELECT * FROM commune WHERE
ouest<='.$data_E.' AND est>='.$data_W.'
AND nord>='.$data_S.' AND sud<='.$data_N);
}
$resultat=$requete->fetchAll(PDO::FETCH_ASSOC);
//détermination si les communes affichées sont dans la sélection ou pas (in)
......@@ -192,14 +210,21 @@ function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
//liste des styles
$svg.='<style type="text/css">'."\n";
//pas de pointillés autor des zones cliquables
$svg.="\t".'a {stroke:inherit;}'."\n";
$svg.="\t".'a:focus {outline-style:none;}'."\n";
//la commune survolée est en surbrillance
$svg.="\t".'path:hover {fill-opacity:1;}'."\n";
$svg.="\t".'.d75, .d78 {fill:Khaki}'."\n";
//couleurs des départememts
$svg.="\t".'.d75, .d95 {fill:Khaki}'."\n";
$svg.="\t".'.d77, .d92 {fill:SkyBlue}'."\n";
$svg.="\t".'.d78, .d94 {fill:GreenYellow}'."\n";
$svg.="\t".'.d91, .d93 {fill:LightCoral}'."\n";
$svg.="\t".'.d94, .d95 {fill:GreenYellow}'."\n";
//couleurs des zones
$svg.="\t".'.zone_bois {fill:Tan; stroke:none;}'."\n";
$svg.='</style>'."\n";
//fond de carte
......@@ -213,46 +238,21 @@ function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
//style commun à tous les tracés de communes
$svg.="\t".'<g id="contour" style="stroke-width:'.$stroke.'; fill:darkgray;">'."\n";
//affichage en premier (arrière-plan) des communes hors sélection (in=false)
$svg.="\t\t".'<g id="out" style="stroke:white; fill-opacity:0.25;">'."\n";
foreach($resultat AS $ligne)
//affichage des communes
foreach(array(false,true) AS $INOUT)
{
if($ligne['in']==false)
if($INOUT==false)
{
//ajout du lien s'il est défini
if($liens!='')
{
$svg.="\t\t\t".'<a xlink:href="'.$liens.$ligne['insee'].'">'."\n";
//ajout de l'info-bulle si elle est définie (il faut que le lien soit défini)
$svg .= "\t\t\t".'<title>'.$ligne['nom_complet'];
if(isset($info[$ligne['insee']]))
$svg .= ' '.$info[$ligne['insee']];
$svg .= '</title>'."\n";
$svg.="\t\t".'<g id="out" style="stroke:white; fill-opacity:0.25;">'."\n";
}
//ajout du tracé de la commune
$svg.="\t\t\t".'<path ';
//couleur spécifiquement définie à défaut couleur du département
if(isset($couleur[$ligne['insee']]))
$svg.='style="fill:'.$couleur[$ligne['insee']].';" ';
else
$svg.='class="d'.floor($ligne['insee']/1000).'" ';
$svg.='d="M'.$ligne['contour'].'Z"/>'."\n";
//fermeture du lien s'il a été ouvert
if($liens!='')
$svg.="\t\t\t".'</a>'."\n";
}
}
$svg.="\t\t".'</g>'."\n";
//affichage en dernier (avant-plan) des communes en sélection (in=true)
{
$svg.="\t\t".'<g id="in" style="stroke:black; fill-opacity:0.5;">'."\n";
}
foreach($resultat AS $ligne)
{
if($ligne['in']==true)
if($ligne['in']==$INOUT)
{
//ajout du lien s'il est défini
if($liens!='')
......@@ -272,14 +272,29 @@ function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
$svg.='style="fill:'.$couleur[$ligne['insee']].';" ';
else
$svg.='class="d'.floor($ligne['insee']/1000).'" ';
$svg.='d="'.$ligne['contour'].'"/>'."\n";
//ajout des zones de la commune (bois, eau)
if($ligne['zones']!='')
{
//la liste est sous forme "style|contour¶style|contour¶…"
$liste=explode('¶',$ligne['zones']);
foreach($liste AS $element)
{
$el=explode('|',$element);
$svg.="\t\t\t".'<path class="zone_'.$el[0].'" d="'.$el[1].'"/>'."\n";
}
}
$svg.='d="M'.$ligne['contour'].'Z"/>'."\n";
//fermeture du lien s'il a été ouvert
if($liens!='')
$svg.="\t\t\t".'</a>'."\n";
}
}
$svg.="\t\t".'</g>'."\n";
}
//affichage en dernier (avant-plan) des communes en sélection (in=true)
$svg.="\t".'</g>'."\n";
......@@ -365,6 +380,25 @@ function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
$svg.='>'.$objet['texte'].'</text>'."\n";
break;
/****** AFFICHAGE DES OBJETS CONTOUR (référentiel géographique)****************/
case 'contour':
if(!isset($objet['contour'])) $objet['contour']='MZ';
if(!isset($objet['stroke'])) $objet['stroke']='lightgray';
if(!isset($objet['stroke-width'])) $objet['stroke-width']='inherit';
$svg.='<g id="communes" transform="scale('.$largeur_f.','.$hauteur_f.') translate('.$dec_lon.','.$dec_lat.')" style="fill-opacity:0.5; stroke-width:'.$stroke.';">'."\n";
$svg.="\t".'<path d="'.$objet['contour'].'" style="fill:'.$objet['couleur'].'; stroke:'.$objet['stroke'].'; stroke-width:'.$objet['stroke-width'].';"';
$svg.='/>'."\n";
$svg.='</g>'."\n";
break;
case 'poly':
if(!isset($objet['contour'])) $objet['contour']='MZ';
if(!isset($objet['stroke'])) $objet['stroke']='lightgray';
if(!isset($objet['stroke-width'])) $objet['stroke-width']=1;
$svg.="\t".'<path d="'.$objet['contour'].'" style="fill:'.$objet['couleur'].'; stroke:'.$objet['stroke'].'; stroke-width:'.$objet['stroke-width'].';"';
$svg.='/>'."\n";
break;
/****** AFFICHAGE DES OBJETS POINT (objet par défaut)**************************/
default:
//valeurs par défaut des attributs des objets point
......@@ -377,14 +411,14 @@ function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
$y2=$y+$objet['taille']*0.2887;
$x2=$x+$objet['taille']*0.5;
$x3=$x-$objet['taille']*0.5;
$svg.="\t".'<polygon points="'.$x.' '.$y1.','.$x2.' '.$y2.','.$x3.' '.$y2.'" style="fill:'.$objet['couleur'].';"';
$svg.="\t".'<polygon points="'.$x.' '.$y1.','.$x2.' '.$y2.','.$x3.' '.$y2.'" style="stroke:black; stroke-width:0.4; fill:'.$objet['couleur'].';"';
if($objet['angle']!=0) $svg.=' transform="rotate('.$objet['angle'].','.$x.','.$y.')"';
$svg.='/>'."\n";
break;
case 'carre':
$y1=$y-$objet['taille']*0.5;
$x1=$x-$objet['taille']*0.5;
$svg.="\t".'<rect x="'.$x1.'" y="'.$y1.'" width="'.$objet['taille'].'" height="'.$objet['taille'].'" style="fill:'.$objet['couleur'].';"';
$svg.="\t".'<rect x="'.$x1.'" y="'.$y1.'" width="'.$objet['taille'].'" height="'.$objet['taille'].'" style="stroke:black; stroke-width:0.4; fill:'.$objet['couleur'].';"';
if($objet['angle']!=0) $svg.=' transform="rotate('.$objet['angle'].','.$x.','.$y.')"';
$svg.='/>'."\n";
break;
......@@ -432,7 +466,7 @@ function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
break;
default: $r=$objet['taille']*0.5;
$svg.="\t".'<circle cx="'.$x.'" cy="'.$y.'" r="'.$r.'" style="fill:'.$objet['couleur'].';"/>'."\n";
$svg.="\t".'<circle cx="'.$x.'" cy="'.$y.'" r="'.$r.'" style="stroke:black; stroke-width:0.4; fill:'.$objet['couleur'].';"/>'."\n";
break;
}
break;
......
......@@ -26,6 +26,7 @@ $smarty = new Smarty();
$smarty->assign(array(
'communeInsee' => $insee,
'communeDept' => $commune['dept'],
'communeNom' => $commune['nom_complet']
));
......
......@@ -2,7 +2,8 @@
<header>
<h1>Vélib Stats (site non officiel) - {$communeNom}</h1>
<nav>
<a href="index.php">&lt; Retour à l'accueil</a>
<a href="index.php">&lt; Retour à l'accueil</a> |
<a href="http://www.ousontlesvelib.ovh/stations/{$communeDept}">Suivre l'avancement d'ouverture des stations &gt;&gt;</a>
</nav>
</header>
<div id="content">
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -24,8 +24,8 @@ $smarty->assign(array(
'dateDerniereConso' => (new DateTime($conso['date']))->format('d/m/Y à H:i')
));
//On récupère les communes
$requete = $pdo->query('SELECT insee, nom_complet FROM commune');
//On récupère les communes adhérentes Vélib au Syndicat Autolib'Vélib'Métropole
$requete = $pdo->query('SELECT insee, nom_complet FROM commune WHERE avm&'.COMMUNE_AVM_VELIB.'!=0 ORDER BY insee');
$communes = $requete->fetchAll(PDO::FETCH_ASSOC);
$smarty->assign(array(
......
......@@ -38,6 +38,7 @@
</select>
<input type="submit" value="Filtrer" />
</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>
</div>
<div id="carteArea"></div>
......@@ -125,6 +126,9 @@
if(data == 'Non ouvert')
return data;
var date = new Date(data);
if(type == 'sort') //Pour le tri, on fait en sorte que la valeur soit triable
return date.getFullYear() + '-' + putZero(date.getMonth()+1) + '-' + putZero(date.getDate());
return putZero(date.getDate()) + '/' + putZero(date.getMonth()+1) + '/' + date.getFullYear();
}
},{
......
......@@ -122,6 +122,8 @@
if(data == 'Non ouvert')
return data;
var date = new Date(data);
if(type == 'sort') //Pour le tri, on fait en sorte que la valeur soit triable
return date.getFullYear() + '-' + putZero(date.getMonth()+1) + '-' + putZero(date.getDate());
return putZero(date.getDate()) + '/' + putZero(date.getMonth()+1) + '/' + date.getFullYear();
}
},{
......
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