Gauge.class.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. require_once(__DIR__.SLASH.'..'.SLASH.'View.class.php');
  3. class Gauge{
  4. public static $LABEL = "Graphique jauge";
  5. public static $DESCRIPTION = "Graphique en forme de jauge";
  6. public static $ICON = "fas fa-tachometer-alt";
  7. function __construct(){}
  8. public static function option(){
  9. $options = array();
  10. return $options;
  11. }
  12. public static function toHtml($label,$data,$options = array()){
  13. $html = '';
  14. if(!isset($options['properties'])) $options['properties'] = array();
  15. try{
  16. $data = $data['data'];
  17. $keys = array_keys($data);
  18. $values = array_values($data);
  19. if(count($data)==0) throw new Exception("<h4 class='text-center'>Aucune donnée</h4>");
  20. if(!isset($data) || View::array_depth($data)>1 || count($data)!=3 ) throw new Exception("Données d'entrées incorrectes.<br> Les données de ce graphique doivent être présentées sous la forme d'un simple tableau clé valeur<br>
  21. <pre>
  22. array(
  23. 'Atteint' => 12,
  24. 'Objectif' => 14,
  25. 'Unité' => '€',
  26. );
  27. </pre>");
  28. if(isset($label)) $html.='<h5 class="text-center">'.$label.'</h5>';
  29. $html .= '<canvas ';
  30. if(isset($options['height'])) $html .= 'data-height="'.$options['height'].'"';
  31. $html .=' data-values="['.$values[0].','.$values[1].']" data-unity="'.$values[2].'" data-labels=\'["'.implode('","',$keys).'"]\' data-type="gauge" id="myout" width="100" height="100"></canvas>';
  32. }catch(Exception $e){
  33. $html .= '<h5 class="text-center">'.(isset($label)?$label:'Affichage impossible :').'</h5><br>'.$e->getMessage();
  34. }
  35. return $html;
  36. }
  37. }
  38. ?>