diff --git a/Controller/ExportController.php b/Controller/ExportController.php index 9aa107a2b..ab71ed858 100644 --- a/Controller/ExportController.php +++ b/Controller/ExportController.php @@ -326,6 +326,6 @@ class ExportController extends Controller $formFormatter->handleRequest($request); $dataFormatter = $formFormatter->getData(); - return $exportManager->generate($alias, $dataExport['export']); + return $exportManager->generate($alias, $dataExport['export'], $dataFormatter); } } diff --git a/Export/Formatter/CSVFormatter.php b/Export/Formatter/CSVFormatter.php index 3cd9d4cd1..91d1e6f3b 100644 --- a/Export/Formatter/CSVFormatter.php +++ b/Export/Formatter/CSVFormatter.php @@ -24,6 +24,8 @@ use Symfony\Component\HttpFoundation\Response; use Chill\MainBundle\Export\FormatterInterface; use Symfony\Component\Translation\TranslatorInterface; use Symfony\Component\Form\FormBuilderInterface; +use Chill\MainBundle\Export\ExportManager; +use Symfony\Component\Form\Extension\Core\Type\FormType; // command to get the report with curl : curl --user "center a_social:password" "http://localhost:8000/fr/exports/generate/count_person?export[filters][person_gender_filter][enabled]=&export[filters][person_nationality_filter][enabled]=&export[filters][person_nationality_filter][form][nationalities]=&export[aggregators][person_nationality_aggregator][order]=1&export[aggregators][person_nationality_aggregator][form][group_by_level]=country&export[submit]=&export[_token]=RHpjHl389GrK-bd6iY5NsEqrD5UKOTHH40QKE9J1edU" --globoff @@ -56,10 +58,18 @@ class CSVFormatter implements FormatterInterface protected $aggregatorsData; + /** + * + * @var ExportManager + */ + protected $exportManager; - public function __construct(TranslatorInterface $translator) + + public function __construct(TranslatorInterface $translator, + ExportManager $manager) { $this->translator = $translator; + $this->exportManager = $manager; } public function getType() @@ -69,12 +79,44 @@ class CSVFormatter implements FormatterInterface public function getName() { - return 'CSV'; + return 'Comma separated values (CSV)'; } public function buildForm(FormBuilderInterface $builder, $exportAlias, array $aggregatorAliases) { + $aggregators = $this->exportManager->getAggregators($aggregatorAliases); + $nb = count($aggregatorAliases); + foreach ($aggregators as $alias => $aggregator) { + $builderAggregator = $builder->create($alias, FormType::class, array( + 'label' => $aggregator->getTitle(), + 'block_name' => '_aggregator_placement_csv_formatter' + )); + $this->appendAggregatorForm($builderAggregator, $nb); + $builder->add($builderAggregator); + } + } + + private function appendAggregatorForm(FormBuilderInterface $builder, $nbAggregators) + { + $builder->add('order', 'choice', array( + 'choices' => array_combine( + range(1, $nbAggregators), + range(1, $nbAggregators) + ), + 'multiple' => false, + 'expanded' => false + )); + + $builder->add('position', 'choice', array( + 'choices' => array( + 'row' => 'r', + 'column' => 'c' + ), + 'choices_as_values' => true, + 'multiple' => false, + 'expanded' => false + )); } /** diff --git a/Resources/config/services.yml b/Resources/config/services.yml index ee660e734..6a30eece0 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -186,5 +186,6 @@ services: class: Chill\MainBundle\Export\Formatter\CSVFormatter arguments: - "@translator" + - "@chill.main.export_manager" tags: - { name: chill.export_formatter, alias: 'csv' } diff --git a/Resources/views/Export/new_formatter_step.html.twig b/Resources/views/Export/new_formatter_step.html.twig index 8949d7beb..8d708b299 100644 --- a/Resources/views/Export/new_formatter_step.html.twig +++ b/Resources/views/Export/new_formatter_step.html.twig @@ -29,7 +29,7 @@ {{ form_start(form) }}
{{ form_widget(form.submit, { 'attr' : { 'class' : 'sc-button btn-action' } } ) }}
diff --git a/Resources/views/Form/fields.html.twig b/Resources/views/Form/fields.html.twig index 14455872d..82ca75d4c 100644 --- a/Resources/views/Form/fields.html.twig +++ b/Resources/views/Form/fields.html.twig @@ -132,4 +132,13 @@ {% endif %} {% endspaceless %} -{% endblock form_errors %} \ No newline at end of file +{% endblock form_errors %} + +{% block _formatter__aggregator_placement_csv_formatter_row %} +