diff --git a/src/Bundle/ChillMainBundle/Controller/DashboardHomepageController.php b/src/Bundle/ChillMainBundle/Controller/DashboardHomepageController.php index c32e061a6..63631717b 100644 --- a/src/Bundle/ChillMainBundle/Controller/DashboardHomepageController.php +++ b/src/Bundle/ChillMainBundle/Controller/DashboardHomepageController.php @@ -11,51 +11,106 @@ declare(strict_types=1); namespace Chill\MainBundle\Controller; -use Chill\MainBundle\Widget\WidgetManager; +use Chill\MainBundle\Widget\WidgetHandlerManager; +use Chill\PersonBundle\Repository\AccompanyingPeriodRepository; use Symfony\Component\HttpFoundation\Request; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; +/** + * @Route("/{_locale}/dashboard") + */ class DashboardHomepageController extends AbstractController{ +// private WidgetHandlerManager $widgetHandlerManager; +// +// public function __construct( +// //AccompanyingPeriodRepository $accompanyingPeriodRepository, +// WidgetHandlerManager $widgetHandlerManager +// ) +// { +// //$this->accompanyingPeriodRepository = $accompanyingPeriodRepository; +// $this->widgetHandlerManager = $widgetHandlerManager; +// } + /** - * @Route("/dashboard-chart-data", name="dashboard_chart_data") + * @Route("/raw_data", name="chill_main_widget_raw_data") */ public function index(): JsonResponse { // Retrieve data and prepare it for the chart $chartData = [ - 'labels' => ['Label 1', 'Label 2', 'Label 3'], - 'datasets' => [ - [ - 'label' => 'Dataset 1', - 'data' => [10, 20, 30], - 'backgroundColor' => ['rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)'], - 'borderColor' => ['rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)'], - 'borderWidth' => 1, + 'data'=> [ + 'labels' => [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December' ], + 'datasets' =>[ + + [ + 'label' => 'Dataset 1', + 'data' => [40, 20, 12, 39, 10, 40, 39, 80, 40, 20, 12, 11], + 'backgroundColor' => ['rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)'], + 'borderColor' => ['rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)'], + 'borderWidth' => 1, + ], + ] ], + ]; + $chartOptions = [ + 'options' => [ + + 'responsive'=> 'true', + 'maintainAspectRatio'=> 'false' + + ] + ]; + $chartConfig =$chartData + $chartOptions; //Return the chart data as JSON response - return $this->json($chartData); + return $this->json($chartConfig, $status = 200,$headers = [], $context= []); } /** - * @Route("/widget/{context}, name="widget_data") + * @Route("/widget/{context}", name="chill_main_widget_get_data") */ - public function getWidgetData(Request $request, $context, WidgetManager $widgetManager): JsonResponse + public function getDataForWidget(Request $request, $context): JsonResponse { //Retrieve data from request in vue component $requestData = json_decode($request->getContent(),true); - // Process the widget data using the WidgetManager - $widgetData = $widgetManager->getDataForWidget($requestData, $context); + // Process the widget data using the WidgetHandlerManager + $handler = $this->widgetHandlerManager->getHandler($requestData, $context); + // Return the widget data in JSON response - return new JsonResponse($widgetData); + return new JsonResponse($this->getData($requestData, $context)); + } + + private function getData( array $config,array $context) + { + $widgetData = []; + foreach ($config as $widget) { + $widgetData[] = [ + 'data' => $this->widgetHandlerManager->getDataForWidget($config,$context), + 'options'=> 'responsive: true' + ]; + } + return $widgetData; } diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/MyCustoms.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/MyCustoms.vue index 335cad070..00d938e48 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/MyCustoms.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/HomepageWidget/MyCustoms.vue @@ -40,7 +40,7 @@