1. Go to this page and download the library: Download 2lenet/dashboard2-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
2lenet / dashboard2-bundle example snippets
use Lle\DashboardBundle\Widgets\AbstractWidget;
public function render()
{
return $this->twig("widget/pasta_widget.html.twig", [
"data" => $data,
]);
}
public function render()
{
return $this->twig("widget/pasta_widget.html.twig", [
"data" => $data,
"exportable" => false
]);
}
public function render()
{
$form = $this->createForm(InterventionWidgetType::class);
return $this->twig("widget/cake_widget.html.twig", [
"data" => $data,
"config_form" => $form->createView()
]);
}
class InterventionWidgetType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('etat', ChoiceType::class, [
'choices' => $yourChoices
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
// Configure your form options here
]);
}
}
public function getCacheKey(): string
{
return $this->getId() . "_" .md5($this->config);
}
public function getCacheTimeout(): int
{
return 300;
}
public function getChartList(): array
{
return [
'COUNTSOMETHING-DAY-30',
'COUNTSOMETHING-DAY-60',
'COUNTSOMETHING-MONTH-12',
'COUNTSOMETHING-MONTH-24',
'SUMSOMETHING-DAY-30',
'SUMSOMETHING-DAY-60',
'SUMSOMETHING-MONTH-12',
'SUMSOMETHING-YEAR-1'
];
}
namespace Lle\DashboardBundle\Contracts;
interface StaticWidgetProviderInterface
{
public function getMyWidgets(): array;
public function getWidget(string $index): ?WidgetTypeInterface;
}
namespace App\Service\Dashboard;
use App\Widget\DossierWorkflow;
use App\Widget\MonitoringBoxes;
use App\Widget\QuotaSms;
use App\Widget\StatsDayWidget;
use App\Widget\StatsWidget;
use App\Widget\SuiviTelechargement;
use Lle\DashboardBundle\Contracts\StaticWidgetProviderInterface;
use Lle\DashboardBundle\Contracts\WidgetTypeInterface;
use Lle\DashboardBundle\Widgets\AbstractWidget;
class StaticWidgetProvider implements StaticWidgetProviderInterface
{
/** @var array<string, WidgetTypeInterface> */
protected array $widgetTypes = [];
/** @var array<string, WidgetTypeInterface> */
protected array $widgets = [];
public function __construct(iterable $widgetTypes)
{
/** @var WidgetTypeInterface $widgetType */
foreach ($widgetTypes as $widgetType) {
if ($widgetType->getType()) {
$this->widgetTypes[$widgetType->getType()] = $widgetType;
}
}
$this->widgets = [
"workflow" => $this->buildWidget(DossierWorkflow::class, ['title' => 'Dossier Workflow']),
"boxs" => $this->buildWidget(MonitoringBoxes::class, ['title' => 'Monitoring Boxes']),
"quotaSms" => $this->buildWidget(QuotaSms::class, ['title' => 'Quota SMS']),
"suivisTelechargement" => $this->buildWidget(SuiviTelechargement::class, ['title' => 'Suivis Téléchargement']),
"statsDay" => $this->buildWidget(StatsDayWidget::class, ['title' => 'Stats par jours']),
"statsAnnuelle" => $this->buildWidget(StatsWidget::class, ['title' => 'Stats']),
];
}
public function getWidgetType(string $widgetType): ?WidgetTypeInterface
{
if (array_key_exists($widgetType, $this->widgetTypes)) {
return clone $this->widgetTypes[$widgetType];
}
return null;
}
private function buildWidget(string $class, array $config): AbstractWidget
{
$type = self::classToType($class);
$widget = $this->widgetTypes[$type] ?? null;
if (!$widget instanceof AbstractWidget) {
throw new \RuntimeException(sprintf('Widget type "%s" is not registered or does not extend AbstractWidget.', $type));
}
$clone = clone $widget;
$clone->setConfig($config);
return $clone;
}
public function getMyWidgets(): array
{
return $this->widgets;
}
public function getWidget(string $index): ?WidgetTypeInterface
{
return $this->widgets[$index] ?? null;
}
private static function classToType(string $class): string
{
return str_replace('\\', '_', $class) . '_widget';
}
}
// src/Widget/DossierWorkflow.php
public function getStaticCssClass(): string
{
return 'col-12 col-md-12';
}
public function renderStatic(): string
{
return $this->twig('widget/my_widget_static.html.twig', [
'data' => $this->getData(),
]);
}
use Lle\DashboardBundle\Contracts\StaticTabProviderInterface;
use Lle\DashboardBundle\Dto\StaticTab;
class StaticWidgetProvider implements StaticTabProviderInterface
{
// getMyWidgets() and getWidget() are unchanged
public function getTabs(): array
{
return [
new StaticTab('monitoring', 'dashboard.tab.monitoring', ['workflow', 'boxs']),
new StaticTab(
key: 'sms',
label: 'dashboard.tab.sms',
widgetKeys: ['quotaSms'],
icon: 'fa fa-comment',
cssClass: 'text-danger',
),
];
}
}