Line.class.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. require_once(__DIR__.SLASH.'..'.SLASH.'View.class.php');
  3. class Line{
  4. public static $LABEL = "Graphique Linéaire";
  5. public static $DESCRIPTION = "Graphique lineaire a deux axes";
  6. public static $ICON = "far fa-chart-line";
  7. function __construct(){}
  8. public static function option(){
  9. $options = array();
  10. $options['color-1'] = array('label'=>'Couleur','type'=>'color');
  11. return $options;
  12. }
  13. public static function toHtml($label,$data,$options){
  14. $html = '';
  15. if(!isset($options['properties'])) $options['properties'] = array();
  16. try{
  17. $data = $data['data'];
  18. $colors = View::colorSet();
  19. shuffle($colors);
  20. if(!empty($options['properties']['color-1'])){
  21. $background = $options['properties']['color-1'];
  22. }else{
  23. $background = array_pop($colors);
  24. }
  25. $keys = array_keys($data);
  26. $values = array_values($data);
  27. if(count($data)==0) throw new Exception("<h4 class='text-center'>Aucune donnée</h4>");
  28. if(!isset($data) || View::array_depth($data)>1 ) 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>
  29. <pre>
  30. array(
  31. 'Légende 1' => 12,
  32. 'Légende 2' => 14,
  33. 'Légende 3' => 15
  34. );
  35. </pre>");
  36. if(isset($label)) $html.='<h5 class="text-center">'.$label.'</h5>';
  37. $html .= '<canvas data-color=\''.$background.'\' ';
  38. $html .= 'data-values="['.implode(',',$values).']" data-labels=\'["'.implode('","',$keys).'"]\' data-type="line" id="myout"></canvas>';
  39. }catch(Exception $e){
  40. $html .= '<h5 class="text-center">'.(isset($label)?$label:'Affichage impossible :').'</h5><br>'.$e->getMessage();
  41. }
  42. return $html;
  43. }
  44. }
  45. ?>