src/Controller/HomeController.php line 22
<?phpnamespace App\Controller;use DateTime;use Exception;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;use Symfony\Component\Routing\Annotation\Route;use Symfony\UX\Chartjs\Builder\ChartBuilderInterface;use Symfony\UX\Chartjs\Model\Chart;class HomeController extends AbstractController{/**** @Route("/", name="home")*/public function index(ChartBuilderInterface $chartBuilder): Response{$defaultColor = 'rgb(206 211 217)';$primaryColor = 'rgb(0 181 200)';$barData=['Song 1'=>32,'Song 2'=>10,'Song 3'=>5,'Song 4'=>53,'Song 5'=>39,'Song 6'=>45,'Song 7'=>33];$values = array_values($barData);$barChartColours = [];$max=0;for ($i=0, $iMax = count($values); $i< $iMax; $i++) {$barChartColours[$i] = $defaultColor;if ($values[$i] > $values[$max]) {$max = $i;}}$barChartColours[$max] = $primaryColor;$barChart = $chartBuilder->createChart(Chart::TYPE_BAR);$barChart->setData(['labels' => array_keys($barData),'datasets' => [['label' => 'Listened','backgroundColor' => $barChartColours,'data' => array_values($barData),],],]);$barChart->setOptions(['scales' => ['y' => ['suggestedMin' => 0,'suggestedMax' => 100,],],'indexAxis' => 'y','plugins' => ['legend' => ['display' => false]]]);$donutChart = $chartBuilder->createChart(Chart::TYPE_DOUGHNUT);$donutChart->setData(['labels' => ['Song 1', 'Song 2', 'Song 3', 'Song 4', 'Song 5'],'datasets' => [['label' => 'Listened','backgroundColor' => ['rgb(255, 99, 132)','rgb(54, 162, 235)','rgb(134, 55, 182)','rgb(255, 99, 132)','rgb(255, 205, 86)',],'data' => [32, 10, 20, 30, 45],'hoverOffset' => 5],],]);$donutChart->setOptions(['scales' => ['y' => ['suggestedMin' => 0,'suggestedMax' => 100,],],'plugins' => [/*'title' => ['display' => true,],*/'legend' => ['display' => false]]]);return $this->render('home/index.html.twig',['initialDate' => new DateTime(),'barChart' => $barChart,'donutChart' => $donutChart,'mainData' => ['sessions_a_day' => 0,'time_of_use' => 0,'completed_sessions' => 0,'previous_assessment' => 0,'late_assessment' => 0]]);}/**** @Route("/data", name="home_data")**/public function data(Request $request): Response{if (!$request->isXmlHttpRequest()) {throw new NotFoundHttpException();}$dateRange = $request->get('date-range');[$startDateString, $endDateString] = explode(' - ', $dateRange);try {$startDate = new DateTime(str_replace('/','-',$startDateString));$endDate = new DateTime(str_replace('/','-',$endDateString));} catch (Exception $e) {return new JsonResponse([],400);}if (in_array($request->get('country'),['all','es','cu','us'])) {$country = $request->get('country');}return new JsonResponse(['sessions_a_day' => 5*$startDate->format('d'),'time_of_use' => $startDate->format('d'),'completed_sessions' => 2*$endDate->format('d'),'previous_assessment' => 3.3,'late_assessment' => 4.7]);}}