Value

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)
    }
);

Last updated