Table.class.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. require_once(__DIR__.SLASH.'..'.SLASH.'View.class.php');
  3. class Table{
  4. public static $LABEL = "Tableau";
  5. public static $DESCRIPTION = "tableau de données";
  6. public static $ICON = "fas fa-table";
  7. public static function toArray($data){
  8. $array = array(array(
  9. 'Erreur' => 'Données d\'entrées incorrectes.Les données de ce graphique doivent être présentées sous la forme d\'un tableau de tableau clé/valeurs '
  10. ));
  11. $data = $data['data'];
  12. if(isset($data) && is_array($data) && ((isset($data[0]) && is_array($data[0]))))
  13. $array = $data;
  14. return $array ;
  15. }
  16. public static function option(){
  17. $options = array();
  18. $options['allow-html'] = array(
  19. 'label'=>'Autoriser le HTML dans la table',
  20. 'type' => 'boolean'
  21. );
  22. $options['pageLength'] = array(
  23. 'label'=>'Nombre de résultats par page',
  24. 'type' => 'list',
  25. 'values'=> array('10'=>'10','20'=>'20','40'=>'40','-1'=>'Tous')
  26. );
  27. return $options;
  28. }
  29. public static function toHtml($label,$data,$options = array()){
  30. $html = "Données d'entrées incorrectes.<br> Les données de ce graphique doivent être présentées sous la forme d'un tableau de tableau clé/valeurs <br>
  31. <pre>
  32. array(
  33. array(
  34. 'Col 1' => 12,
  35. 'Col 2' => 14,
  36. 'Col 3' => 15
  37. ),
  38. array(
  39. 'Col 1' => 'Hello',
  40. 'Col 2' => 'World',
  41. 'Col 3' => '!!!'
  42. )
  43. );
  44. </pre>";
  45. if(!isset($options['properties'])) $options['properties'] = array();
  46. $data = $data['data'];
  47. if(isset($data) && is_array($data) && (((isset($data[0]) && is_array($data[0]) || count($data)==0)))) {
  48. $html = '';
  49. if(isset($label)) $html.='<h5 class="text-center p-4">'.$label.' <i onclick="stats_export_view_table(this)" title="Exporter au format Excel" class="far fa-file-excel pointer text-success"></i></h5>';
  50. $html .= '
  51. <table data-type="data-table" data-pageLength="'.(isset($options['properties']['pageLength']) && is_numeric($options['properties']['pageLength']) ? $options['properties']['pageLength'] : 20).'" class="table table-stripped table-hover table-bordered">';
  52. $html .= '<thead class="thead-inverse-blue">';
  53. $html .= '<tr>';
  54. if(isset($data[0])){
  55. foreach($data[0] as $column=>$value)
  56. $html .= '<th>'.htmlspecialchars($column).'</th>';
  57. }else{
  58. $html .= '<th class="text-center">Aucune donnée</th>';
  59. }
  60. $html .= '</tr>';
  61. $html .= '</thead>';
  62. $html .= '<tbody>';
  63. foreach($data as $line){
  64. $html .= '<tr>';
  65. foreach($line as $column=>$value){
  66. if(!isset($options['properties']['allow-html']) || $options['properties']['allow-html']!=='1') $value = htmlspecialchars($value);
  67. $html .= '<td>'.$value.'</td>';
  68. }
  69. $html .= '</tr>';
  70. }
  71. $html .= '<tbody>';
  72. $html .= '</table>';
  73. }
  74. return $html ;
  75. }
  76. }
  77. ?>