src/Controller/DefaultController.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\ExpertRepository;
  4. use App\Repository\SpecieRepository;
  5. use App\Repository\SpecieAreaRepository;
  6. use App\Repository\GeneralSkillRepository;
  7. use App\Repository\ExpertAreaSpecieRepository;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. class DefaultController extends AbstractController
  11. {
  12.     /**
  13.      * @Route("/", name="accueil")
  14.      */
  15.     public function index(ExpertRepository $expertRepositoryExpertAreaSpecieRepository $expertAreaSpecieRepositorySpecieAreaRepository $specieAreaRepository,  SpecieRepository $specieRepositoryGeneralSkillRepository $generalSkillRepository)
  16.     {
  17.         $entitiesExperts $expertRepository->findAll();
  18.         $nbCountries $expertRepository->getNbCountries();
  19.         $entitiesSpecies $specieRepository->findAll();
  20.         $entitiesGeneralSkills $generalSkillRepository->findAll();
  21.         $entitiesSpecieArea $specieAreaRepository->findAll();
  22.         $datas=$expertRepository->getCountByCountry();
  23.         $dataCountries=$this->generateGraphe("Country","pie","chartContainer1",$datas);
  24.         // $datas=array();
  25.         // foreach ($entitiesGeneralSkills as $entity) $datas[$entity->getLibelle()]=0;
  26.         // foreach ($entitiesExperts as $entity)
  27.         // {
  28.         //     foreach ($entity->getGeneralSkill() as $gs) $datas[$gs->getLibelle()]++;
  29.         // }
  30. #        $dataGS=$this->generateGrapheByTab("pie","chartContainer2",$datas);
  31.         $datas=$expertAreaSpecieRepository->getCountBy("specie");
  32.         $dataGS=$this->generateGraphe("Specie","pie","chartContainer2",$datas);
  33.         return $this->render('index.html.twig', [
  34.             'entitiesExperts' => $entitiesExperts,
  35.             'entitiesSpecies' => $entitiesSpecies,
  36.             'entitiesGeneralSkills' => $entitiesGeneralSkills,
  37.             'nbCountries' => $nbCountries,
  38.             'entitiesSpecieArea' => $entitiesSpecieArea,
  39.             'dataCountries' => $dataCountries,
  40.             'dataGS' => $dataGS,
  41.         ]);
  42.     }
  43.     public function generateGraphe($champ,$type,$container,$datas)
  44.     {
  45.         $color="";
  46.         $color="'#82C46C','#791CF8','#9D3E0C','#111111','#3361FF','#BBAE98','#79F8F8','#33FF96','#83A697','#FDEE00','#EF9B0F','#FF33F3','#E73E01'";
  47.         $data='<div style="width: 100%; display: inline-block;margin-right: 50px;"><canvas style="background-color: #ffffff;" id="'.$container.'" class="chartjs"></canvas></div>
  48.         <script>
  49.         new Chart(
  50.             document.getElementById("'.$container.'"),
  51.             {
  52.                 type:"'.$type.'",
  53.         
  54.                 data:
  55.                 {
  56.                     labels:[';
  57.         foreach($datas as $ligne
  58.         {
  59.             $func "get" $champ;
  60.             if ($ligne[0]->{$func}()==""$data.="'NA',";
  61.             else $data.="'".$ligne[0]->{$func}()."',";
  62.         }
  63.         $data.='],
  64.                     datasets:
  65.                     [
  66.                         {
  67.                             "label":"",
  68.                             "data":[';
  69.         foreach($datas as $ligne$data.= "'".$ligne["nb"]. "',";
  70.         $data.='],
  71.                             "fill":false,
  72.                             "backgroundColor":['.$color.'],
  73.                             "borderColor":['.$color.'],
  74.                             "borderWidth":1
  75.                         }
  76.                     ]
  77.                 },
  78.                 options:
  79.                 {
  80.                     scales:
  81.                     {
  82.                         yAxes:
  83.                         [
  84.                             {
  85.                                 ticks:
  86.                                 {
  87.                                     beginAtZero:true
  88.                                 }
  89.                             }
  90.                         ]
  91.                     }
  92.                 }
  93.             }
  94.         );
  95.         </script>';
  96.         return $data;
  97.     }
  98.     public function generateGrapheByTab($type,$container,$datas)
  99.     {
  100.         $color="";
  101.         $color="'#82C46C','#791CF8','#9D3E0C','#BBAE98','#79F8F8','#83A697','#FDEE00','#EF9B0F','#E73E01'";
  102.         $data='<div style="width: 100%; display: inline-block;margin-right: 50px;"><canvas style="background-color: #ffffff;" id="'.$container.'" class="chartjs"></canvas></div>
  103.         <script>
  104.         new Chart(
  105.             document.getElementById("'.$container.'"),
  106.             {
  107.                 type:"'.$type.'",
  108.         
  109.                 data:
  110.                 {
  111.                     labels:[';
  112.         foreach($datas as $key=>$val$data.="'$key',";
  113.         $data.='],
  114.                     datasets:
  115.                     [
  116.                         {
  117.                             "label":"",
  118.                             "data":[';
  119.         foreach($datas as $val$data.= "'$val',";
  120.         $data.='],
  121.                             "fill":false,
  122.                             "backgroundColor":['.$color.'],
  123.                             "borderColor":['.$color.'],
  124.                             "borderWidth":1
  125.                         }
  126.                     ]
  127.                 },
  128.                 options:
  129.                 {
  130.                     scales:
  131.                     {
  132.                         yAxes:
  133.                         [
  134.                             {
  135.                                 ticks:
  136.                                 {
  137.                                     beginAtZero:true
  138.                                 }
  139.                             }
  140.                         ]
  141.                     }
  142.                 }
  143.             }
  144.         );
  145.         </script>';
  146.         return $data;
  147.     }
  148. }