Commit 9b6f95bc authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

l'export de la cartographie passe maintenant par du javascript pour eviter un recalcul

parent 37e574c7
Loading
Loading
Loading
Loading
+0 −20
Changes for module/Application/config/merged/metier.config.php: 0 added lines, 20 removed lines.
Original line number Diff line number Diff line
@@ -4,10 +4,6 @@ namespace Application;

use Application\Controller\MetierController;
use Application\Controller\MetierControllerFactory;
use Application\Form\Domaine\DomaineForm;
use Application\Form\Domaine\DomaineFormFactory;
use Application\Form\Domaine\DomaineHydrator;
use Application\Form\Domaine\DomaineHydratorFactory;
use Application\Form\Metier\MetierForm;
use Application\Form\Metier\MetierFormFactory;
use Application\Form\Metier\MetierHydrator;
@@ -21,8 +17,6 @@ use Application\Form\MetierReferentiel\MetierReferentielFormFactory;
use Application\Form\MetierReferentiel\MetierReferentielHydrator;
use Application\Form\MetierReferentiel\MetierReferentielHydratorFactory;
use Application\Provider\Privilege\MetierPrivileges;
use Application\Service\Domaine\DomaineService;
use Application\Service\Domaine\DomaineServiceFactory;
use Application\Service\FamilleProfessionnelle\FamilleProfessionnelleService;
use Application\Service\FamilleProfessionnelle\FamilleProfessionnelleServiceFactory;
use Application\Service\Metier\MetierService;
@@ -105,7 +99,6 @@ return [
                    'controller' => MetierController::class,
                    'action' => [
                        'cartographie',
                        'export-cartographie',
                    ],
                    'privileges' => [
                        MetierPrivileges::METIER_CARTOGRAPHIE,
@@ -378,19 +371,6 @@ return [
                            ],
                        ],
                        'may_terminate' => true,
                        'child_routes' => [
                            'export' => [
                                'type' => Literal::class,
                                'options' => [
                                    'route'    => '/export',
                                    'defaults' => [
                                        'controller' => MetierController::class,
                                        'action'     => 'export-cartographie',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                        ],
                    ],
                ],
            ],
+0 −16
Changes for module/Application/src/Application/Controller/MetierController.php: 0 added lines, 16 removed lines.
Original line number Diff line number Diff line
@@ -359,20 +359,4 @@ class MetierController extends AbstractActionController {
            'results' => $results,
        ]);
    }

    public function exportCartographieAction() {
        $results = $this->getMetierService()->generateCartographyArray();

        $headers = [ 'Metier', 'Niveau', 'Références', 'Domaine', 'Fonction', 'Famille', '#Fiche'];

        $today = new DateTime();
        $result = new CsvModel();
        $result->setDelimiter(';');
        $result->setEnclosure('"');
        $result->setHeader($headers);
        $result->setData($results);
        $result->setFilename('cartographie_metier_'.$today->format('Ymd-His').'.csv');

        return $result;
    }
}
+37 −7
Changes for module/Application/view/application/metier/cartographie.phtml: 37 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -19,13 +19,7 @@ $this->headTitle('Cartographie des métiers');

        <div class="col-md-5" >
            <?php if ($canCarto) : ?>
                <a
                    <?php /** @see \Application\Controller\MetierController::exportCartographieAction() */ ?>
                    class="btn btn-primary action "
                   href="<?php echo $this->url('metier/cartographie/export', [], [], true); ?>"
                >
                    Export de la cartographie
                </a>
                <span class="export btn btn-primary action" id="cartographie"></span>
            <?php endif ; ?>
        </div>

@@ -78,4 +72,40 @@ $this->headTitle('Cartographie des métiers');
            }
        } );
    } );

    downloadCSVFromJson = (filename, arrayOfJson) => {
        // convert JSON to CSV
        const replacer = (key, value) => value === null ? '-' : value
        const header = Object.keys(arrayOfJson[0])
        let csv = arrayOfJson.map(row => header.map(fieldName =>
            JSON.stringify(row[fieldName], replacer)).join(';'))
        csv.unshift(header.join(';'))
        csv = csv.join('\r\n')

        // Create link and download
        var link = document.createElement('a');
        link.setAttribute('href', 'data:text/csv;charset=utf-8,%EF%BB%BF' + encodeURIComponent(csv));
        link.setAttribute('download', filename);
        link.style.visibility = 'hidden';
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    };

    $('span.export#cartographie').on('click', function() {
        let tableau = <?php echo json_encode($results); ?>;
        downloadCSVFromJson('cartographie_'+ Date.now().toString() +'.csv', tableau);
    });

</script>

<style>
    span.export {
        cursor: pointer;
        width: 20rem:;
    }

    span.export::before{
        content: "Télécharger la cartographie";
    }
</style>