<?php /* * Page displays in french because it will be mostly used by french. Feel free to add language system. * TODO Cache the humongous API data * TODO Sort the stations */ /* Form submit values if a filter is active or not */ $SEND_BUTTON = [ true => [ 'value' => '', 'text' => 'Tout afficher'], false => [ 'value' => 'true', 'text' => 'Afficher la sélection'], ]; /* Fetching velov API in an associative array. This form is easier to use as keys are ids */ $data = json_decode( file_get_contents('https://api.jcdecaux.com/vls/v1/stations?apiKey=frifk0jbxfefqqniqez09tw4jvk37wyf823b5j1i&contract=lyon', false ), true ); /* Check if a filter is enabled */ if(isset($_GET['filter'])){ if(htmlentities($_GET['filter'])) $filter = true; else $filter = false; }else $filter = false; ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" type="text/css" href="style.css"> <title>Because velov map is too heavy</title> </head> <body> <form action="" method="get"> <input type="hidden" name="filter" value="<?php echo $SEND_BUTTON[$filter]['value']; ?>" /> <input type="submit" value="<?php echo $SEND_BUTTON[$filter]['text']; ?>" /> <table> <tr><th>Sélectionner</th><th>Nom</th><th>Vélos</th><th>Places Libres</th></tr> <?php foreach ($data as $key => $station){ if ( ! $filter || isset($_GET[$station['number']])){ echo '<tr> <td> <input type="checkbox" name="',$station['number'],'" ',(isset($_GET[$station['number']]) ? 'checked="checked"' : ''),' /> </td> <td class="', ($station['status'] == 'OPEN' ? 'success' : 'danger' ) ,'" >' ,$station['name'], '</td> <td>',$station['available_bikes'], '</td> <td>', $station['available_bike_stands'], '</td> </tr>'; } } ?> </table> <input type="submit" value="<?php echo $SEND_BUTTON[$filter]['text']; ?>" /> </form> <p> <h4>À quoi ça sert ?</h4> À garder ses stations habituelles (et leurs voisines) dans un favoris de navigateur ! Plus besoin de se ballader sur une carte tous les jours ! Cet outil est également accessible sur tous les téléphones peu performants, contrairement au site officiel. </p> <p> <h4>Pourquoi cette page est elle lente ?</h4> Parce qu’il faut télécharger toutes les données relatives aux stations vélov à chaque chargement ! N’hésitez pas à améliorer cette page sur <a href="http://github.com/adrian-amaglio/velov">Github</a> </p> <p> <h4>Pourquoi ces couleurs ?</h4> Le <span class="success">vert</span> est réservé aux stations actives, le <span class="danger">rouge</span> est pour celles inutilisables. </p> <p> <h4>C’est tout dans le désordre !</h4> Oui. </p> </body> </html>