Commit 3621232a authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Ajout d'un filtre pour les macros

parent 03da5185
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -17,9 +17,29 @@ class MacroController extends AbstractActionController {
    public function indexAction() {
        $macros = $this->getMacroService()->getMacros();

        $macroNames = []; $variables = []; $methodes = [];
        foreach ($macros as $item) {
            $macroNames[$item->getCode()]    = $item->getCode();
            $variables[$item->getVariable()] = $item->getVariable();
            $methodes[$item->getMethode()]   = $item->getMethode();
        }

        $macroName = $this->params()->fromQuery('macroName');
        if ($macroName !== '') $macros = array_filter($macros, function (Macro $a) use ($macroName) { return $a->getCode() === $macroName; });
        $variable = $this->params()->fromQuery('variable');
        if ($variable !== '') $macros = array_filter($macros, function (Macro $a) use ($variable) { return $a->getVariable() === $variable; });
        $methode = $this->params()->fromQuery('methode');
        if ($methode !== '') $macros = array_filter($macros, function (Macro $a) use ($methode) { return $a->getMethode() === $methode; });

        return new ViewModel([
            'macros' => $macros,

            'macroNames' => $macroNames,
            'macroName' => $macroName,
            'variables' => $variables,
            'variable' => $variable,
            'methodes' => $methodes,
            'methode' => $methode,
        ]);
    }

+6 −5
Original line number Diff line number Diff line
@@ -147,9 +147,10 @@ class MacroService {
    /**
     * @param string $code
     * @param array $variables
     * @return string
     * @param bool $silent
     * @return string|null
     */
    public function getTexte(string $code, array $variables)
    public function getTexte(string $code, array $variables, bool $silent = false) : ?string
    {
        $code = str_replace('VAR[','', $code);
        $code = str_replace(']','', $code);
@@ -161,11 +162,11 @@ class MacroService {
                    $texte = $variables[$macro->getVariable()]->{$macro->getMethode()}();
                    return $texte;
                }
                return "<span style='color:darkred;'> Méthode [".$macro->getMethode()."] non trouvée </span>";
                return (!$silent)?"<span style='color:darkred;'> Méthode [".$macro->getMethode()."] non trouvée </span>":null;
            }
            return "<span style='color:darkred;'> Variable [".$macro->getVariable()."] non trouvée </span>";
            return (!$silent)?"<span style='color:darkred;'> Variable [".$macro->getVariable()."] non trouvée </span>":null;
        }
        return "<span style='color:darkred;'> Macro [".$code."] non trouvée </span>";
        return (!$silent)?"<span style='color:darkred;'> Macro [".$code."] non trouvée </span>":null;
    }

    /**
+10 −0
Original line number Diff line number Diff line
@@ -3,6 +3,12 @@
/**
 * @see \UnicaenDocument\Controller\MacroController::indexAction()
 * @var Macro[] $macros
 * @var string[] $macroNames
 * @var string[] $variables
 * @var string[] $methodes
 * @var string $macroName
 * @var string $variable
 * @var string $methode
 */

use UnicaenDocument\Entity\Db\Macro;
@@ -34,6 +40,10 @@ $this->headTitle("Index des macros");
        Générer le JSON des macros
    </a>

    <?php echo $this->partial('partial/filtre',
        [   'macroNames' => $macroNames, 'variables' => $variables, 'methodes' => $methodes,
            'macroName' => $macroName, 'variable' => $variable, 'methode' => $methode], [], true); ?>

    <table class="table table-condensed">
        <thead>
            <tr>
+74 −0
Original line number Diff line number Diff line
<?php

/**
 * @var string[] $macroNames
 * @var string $macroName
 * @var string[] $variables
 * @var string $variable
 * @var string[] $methodes
 * @var string $methode
 */
?>

<div class="panel panel-default">
    <div class="panel-heading">
        <span class="icon filtrer"></span> Filtre des fiches métiers
    </div>
    <div class="panel-body">
        <form method="get" id="filtre" action="<?php echo $this->url(); ?>">
            <div class="col-md-3">
                <div class="form-group">
                    <label for="macroName">Code de la macro : </label>
                    <select id="macroName" name="macroName" class="selectpicker" data-live-search="true">
                        <option value="">Toutes les macros</option>
                        <?php foreach ($macroNames as $item) : ?>
                            <option value="<?php echo $item; ?>" <?php if ($macroName === $item) echo " selected "; ?> >
                                <?php echo $item; ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
            </div>
            <div class="col-md-3">
                <div class="form-group">
                    <label for="variable">Variable associée : </label>
                    <select id="variable" name="variable" class="selectpicker" data-live-search="true">
                        <option value="">Toutes les variables</option>
                        <?php foreach ($variables as $item) : ?>
                            <option value="<?php echo $item; ?>" <?php if ($variable === $item) echo " selected "; ?> >
                                <?php echo $item; ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
            </div>
            <div class="col-md-3">
                <div class="form-group">
                    <label for="methode">Méthode associée : </label>
                    <select id="methode" name="methode" class="selectpicker" data-live-search="true">
                        <option value="">Toutes les méthodes</option>
                        <?php foreach ($methodes as $item) : ?>
                            <option value="<?php echo $item; ?>" <?php if ($methode === $item) echo " selected "; ?> >
                                <?php echo $item; ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
            </div>
            <!-- BOUTON -->
            <div class="col-md-3">
                <br/>
                <div class="pull-right">
                    <button class="btn btn-primary" id="clear">
                        <span class="icon effacer"></span>
                    </button>

                    <button class="btn btn-primary" id="filter" style="width:20rem;">
                        <span class="icon filtrer"></span>
                        Filtrer
                    </button>
                </div>
            </div>
        </form>
    </div>
</div>