This is the official documentation of the forestadmin/laravel-forestadmin v2+ and forestadmin/symfony-forestadmin PHP agents.
Value Charts display a single numerical value.
They can be added to a Dashboard using the addChart method on the agent object
use ForestAdmin\AgentPHP\DatasourceCustomizer\Context\AgentCustomizationContext;
use ForestAdmin\AgentPHP\DatasourceCustomizer\Decorators\Chart\ResultBuilder;
use ForestAdmin\AgentPHP\DatasourceToolkit\Components\Query\Aggregation;
use ForestAdmin\AgentPHP\DatasourceToolkit\Components\Query\ConditionTree\ConditionTreeFactory;
use ForestAdmin\AgentPHP\DatasourceToolkit\Components\Query\ConditionTree\Operators;
use ForestAdmin\AgentPHP\DatasourceToolkit\Components\Query\Filters\Filter;
$forestAgent->addChart(
'monthlyRecuringRevenue',
function (AgentCustomizationContext $context, ResultBuilder $resultBuilder) {
$aggregation = new Aggregation('Sum', 'amount');
$filter = new Filter(
ConditionTreeFactory::fromArray(['field' => 'status', 'operator' => Operators::EQUAL, 'value' => paid])
);
$value = $context->getDatasource()->getCollection('Payment')->aggregate($filter, $aggregation);
return $resultBuilder->value($value)
}
);
Or to the "Analytics" Tab of a Collection using the addChart method on the collection object
use ForestAdmin\AgentPHP\DatasourceCustomizer\CollectionCustomizer;
use ForestAdmin\AgentPHP\DatasourceCustomizer\Decorators\Chart\CollectionChartContext;
use ForestAdmin\AgentPHP\DatasourceCustomizer\Decorators\Chart\ResultBuilder;
use ForestAdmin\AgentPHP\DatasourceToolkit\Components\Query\Aggregation;
use ForestAdmin\AgentPHP\DatasourceToolkit\Components\Query\ConditionTree\ConditionTreeFactory;
use ForestAdmin\AgentPHP\DatasourceToolkit\Components\Query\ConditionTree\Operators;
use ForestAdmin\AgentPHP\DatasourceToolkit\Components\Query\Filters\Filter;
$forestAgent->customizeCollection('Customer', fn(CollectionCustomizer $builder) => $builder->addChart(
'monthlyRecuringRevenue',
function (CollectionChartContext $context, ResultBuilder $resultBuilder) {
$aggregation = new Aggregation('Count', 'id');
$filter = new Filter(
ConditionTreeFactory::fromArray(
[
'aggregator' => 'And',
'conditions' => [
['field' => 'status', 'operator' => Operators::EQUAL, 'value' => 'paid']
['field' => 'customer:id', 'operator' => Operators::EQUAL, 'value' => $context->getRecordId()]
]
]
)
);
$value = $context->getDatasource()->getCollection('Payment')->aggregate($filter, $aggregation);
return $resultBuilder->value($value)
}
);
Optionally, an older value can be provided to the resultBuilder to display a growth percentage on the top right of the widget as in the following Chart display:
use ForestAdmin\AgentPHP\DatasourceCustomizer\Context\AgentCustomizationContext;
use ForestAdmin\AgentPHP\DatasourceCustomizer\Decorators\Chart\ResultBuilder;
$forestAgent->addChart(
'appointments',
function (AgentCustomizationContext $context, ResultBuilder $resultBuilder) {
return $resultBuilder->value(784, 760)
}
);