ics / dashboard-bundle
Bundle de gestion des tableaux de bord
Installs: 207
Dependents: 2
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 0
Language:JavaScript
Type:symfony-bundle
pkg:composer/ics/dashboard-bundle
Requires
README
Dashboard for symfony bundle
Installation
Make sure Composer is installed globally, as explained in the installation chapter of the Composer documentation.
Applications that use Symfony Flex
Open a command console, enter your project directory and execute:
composer require ics/dashboard-bundle
Applications that don't use Symfony Flex
Step 1: Download the Bundle
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
composer require ics/dashboard-bundle
Step 2: Enable the Bundle
Then, enable the bundle by adding it to the list of registered bundles
in the config/bundles.php file of your project:
// config/bundles.php return [ // ... ICS\DashboardBundle\DashboardBundle::class => ['all' => true], ];
Step 3: Adding bundle routing
Add routes in applications config/routes.yaml
# config/routes.yaml # ... dashboard_bundle: resource: '@DashboardBundle/config/routes.yaml' prefix: /dashboard # ...
Step 4: Install Database
For install database :
# Installer la base de données
php bin/console doctrine:schema:create
For update database :
# Mise a jour la base de données
php bin/console doctrine:schema:update -f
Configuration
Step 1 : Dashboard configuration
# config/packages/dashboard.yaml dashboard: dashboards: homepage: nbColumns: 12 widgets: datetime: entity: ICS\DashboardBundle\Entity\DTWidget libelle: Date and Time icon: fa fa-clock group: Generic roles: ['ROLE_USER'] help: entity: ICS\DashboardBundle\Entity\HelpWidget libelle: Help icon: fa fa-question-circle group: Generic roles: ['ROLE_USER'] postit: entity: ICS\DashboardBundle\Entity\PostitWidget libelle: Post-It icon: fa fa-sticky-note group: Generic roles: ['ROLE_USER']
Step 2 : Twig integration
{# templates/index.html.twig #} {% extends 'base.html.twig' %} {% block title %}Homepage{% endblock %} {% block stylesheets %} {{ renderDashBoardcss('homepage') }} {% endblock %} {% block body %} {{ renderDashBoard('homepage') }} {% endblock %} {% block javascripts %} {{ renderDashBoardjs('homepage') }} {% endblock %}
Widget Developpement
Step 1 : Create entity
To start, write an entity inheriting from Widget.
This must have at least the getUI() method. It can also have the getJs() and getCss() methods to add javascripts or css to your widgets.
<?php namespace ICS\DashboardBundle\Entity; use Doctrine\ORM\Mapping as ORM; use ICS\DashboardBundle\Form\Type\DTWidgetType; use Twig\Environment; /** * @ORM\Table(name="dtwidgets", schema="dashboard") * @ORM\Entity */ class DTWidget extends Widget { /** * @ORM\Column(type="string", nullable=false) */ private $timezone = 'Europe/Paris'; protected $configForm = DTWidgetType::class; protected $resize = false; public function __construct(Environment $twig) { parent::__construct($twig); $this->setWidth(2); $this->setHeight(2); } public function getJs() { if (null == $this->twig) { return ''; } return $this->twig->render('@Dashboard/Generic/DTWidget.js.twig', ['widget' => $this]); } public function getUI() { if (null == $this->twig) { return ''; } return $this->twig->render('@Dashboard/Generic/DTWidget.html.twig', ['widget' => $this]); } /** * Get the value of timezone. */ public function getTimezone() { return $this->timezone; } /** * Set the value of timezone. * * @return self */ public function setTimezone($timezone) { $this->timezone = $timezone; return $this; }
Step 2 : Integrate in configuration
Before integrating, don't forget to update the database.
# .... widgets: datetime: entity: ICS\DashboardBundle\Entity\DTWidget libelle: Date and Time icon: fa fa-clock group: Generic roles: ['ROLE_USER'] # ...