Mejorando la Visualización de Métricas en la Herramienta de Homologación de Reimpact con Filament
En el proyecto Reimpact, específicamente en el desarrollo de su plataforma, hemos implementado una mejora significativa en la página de la Herramienta de Homologación. El objetivo principal fue enriquecer la visualización de datos clave de producto para facilitar el proceso de homologación.
Para lograr esto, se han incorporado tres nuevos gráficos de métricas de producto directamente como widgets de cabecera en la página de la Herramienta de Homologación. Estos gráficos proporcionan una vista rápida y concisa sobre:
- Métricas de producto por marca.
- Estado de transacciones y recetas.
- Productos creados por mes.
Estos widgets se han diseñado para aparecer en una única fila, optimizando el espacio visual y ofreciendo una altura reducida (220px) para mantener la interfaz limpia y funcional. Esta disposición permite a los usuarios acceder de un vistazo a información crítica sin necesidad de navegar a diferentes secciones, mejorando la eficiencia en el monitoreo y la toma de decisiones.
La integración se realizó utilizando las capacidades de Filament, lo que permitió un desarrollo ágil y una fácil incrustación de estos componentes visuales en la interfaz administrativa existente. Un ejemplo conceptual de cómo se podría declarar un widget en Filament sería:
// app/Filament/Pages/HomologationTool.php (Conceptual)
use Filament\Pages\Page;
use App\Filament\Widgets\ProductByBrandChart;
use App\Filament\Widgets\TransactionsStatusChart;
use App\Filament\Widgets\CreatedPerMonthChart;
class HomologationTool extends Page
{
protected static string $view = 'filament.pages.homologation-tool';
protected function getHeaderWidgets(): array
{
return [
ProductByBrandChart::class,
TransactionsStatusChart::class,
CreatedPerMonthChart::class,
];
}
}
// app/Filament/Widgets/ProductByBrandChart.php (Conceptual)
use Filament\Widgets\ChartWidget;
class ProductByBrandChart extends ChartWidget
{
protected static ?string $heading = 'Productos por Marca';
protected static ?int $sort = 1;
protected int | string | array $columnSpan = 'full';
protected static ?string $maxHeight = '220px';
protected function getType(): string
{
return 'bar'; // or 'line', 'pie'
}
protected function getData(): array
{
// Logic to retrieve data for the chart
return [
'datasets' => [
[
'label' => 'Productos',
'data' => [100, 150, 200, 120, 80],
],
],
'labels' => ['Marca A', 'Marca B', 'Marca C', 'Marca D', 'Marca E'],
];
}
}