Commit 5d5766d6 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Ajout des paramètres 'editable' et 'name' (Nom technique)

parent af569038
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
<?php

namespace Oscar\Entity;

use DateTime;
@@ -41,6 +42,14 @@ class ActivityFreeField
     */
    private ?string $label = null;

    /**
     * Nom technique
     *
     * @var string
     * @ORM\Column(type="text", nullable=false)
     */
    private string $name;

    /**
     * Description du champ.
     *
@@ -57,6 +66,14 @@ class ActivityFreeField
     */
    private bool $required = false;

    /**
     * Indique si le champ est éditable (affiché dans le formulaire)
     *
     * @var bool
     * @ORM\Column(type="boolean", nullable=false)
     */
    private bool $editable = true;

    /**
     * Indique si le champ est obligatoire.
     *
@@ -83,6 +100,16 @@ class ActivityFreeField
        $this->label = $label;
    }

    public function getName(): string
    {
        return $this->name;
    }

    public function setName(string $name): void
    {
        $this->name = $name;
    }

    public function getType(): string
    {
        return $this->type;
@@ -103,6 +130,16 @@ class ActivityFreeField
        $this->description = $description;
    }

    public function isEditable(): bool
    {
        return $this->editable;
    }

    public function setEditable(bool $editable): void
    {
        $this->editable = $editable;
    }

    public function isRequired(): bool
    {
        return $this->required;
+24 −0
Original line number Diff line number Diff line
@@ -6,5 +6,29 @@ use Doctrine\ORM\EntityRepository;

class ActivityFreeFieldRepository extends EntityRepository
{
    const PATTERN_NAME = 'ff_%s_%s';

    public function getListName() :array
    {
        $query = $this->createQueryBuilder('f');

        $query->select('f');
        $out = [];
        foreach ($query->getQuery()->getArrayResult() as $row) {
            $out[sprintf(self::PATTERN_NAME, $row['id'], $row['name'])] = $row['label'];
        }
        return $out;
    }

    public function getListNameEditable()
    {
        $query = $this->createQueryBuilder('f');

        $query->select('f')->where('f.editable = true');
        $out = [];
        foreach ($query->getQuery()->getArrayResult() as $row) {
            $out[sprintf(self::PATTERN_NAME, $row['id'], $row['name'])] = $row['label'];
        }
        return $out;
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -37,8 +37,10 @@ class ActivityFreeFieldService implements UseLoggerService, UseEntityManager
        // TODO Vérification des données
        $freeField = new ActivityFreeField();
        $freeField->setLabel($getPost['label']);
        $freeField->setName($getPost['name']);
        $freeField->setDescription($getPost['description']);
        $freeField->setRequired($getPost['required'] == 'true');
        $freeField->setEditable($getPost['editable'] == 'true');
        $freeField->setType($getPost['type']);
        $this->getEntityManager()->persist($freeField);
        try {
@@ -77,8 +79,10 @@ class ActivityFreeFieldService implements UseLoggerService, UseEntityManager
        // TODO Vérification des données
        $freeField = $this->getActivityFreeFieldById($datas['id']);
        $freeField->setLabel($datas['label']);
        $freeField->setName($datas['name']);
        $freeField->setDescription($datas['description']);
        $freeField->setRequired($datas['required'] == 'true');
        $freeField->setEditable($datas['editable'] == 'true');
        $freeField->setType($datas['type']);

        try {
+28 −3
Original line number Diff line number Diff line
@@ -20,7 +20,9 @@ export default {
        id: null,
        type: 'date',
        label: '',
        name: '',
        required: false,
        editable: true,
        description: '',
        options: []
      }
@@ -31,7 +33,9 @@ export default {
      data.append('id', this.edited.id);
      data.append('type', this.edited.type);
      data.append('label', this.edited.label);
      data.append('name', this.edited.name);
      data.append('required', this.edited.required);
      data.append('editable', this.edited.editable);
      data.append('description', this.edited.description);
      data.append('options', JSON.stringify(this.edited.options));

@@ -43,7 +47,6 @@ export default {
      }

      transaction.then(() => {
        console.log("DONE");
        this.edited = null;
        this.fetch();
      });
@@ -52,7 +55,6 @@ export default {
    handlerDelete(field){
      axiosOscar.delete(this.url + "?id=" + field.id).then(
          ok => {
            console.log(ok);
            this.fetch();
          }
      )
@@ -83,7 +85,17 @@ export default {
        <label for="intitule" class="form-label">
          Intitulé
        </label>
        <input type="text" class="form-control" v-model="edited.label" id="intitule" />
        <input type="text" class="form-control" v-model="edited.label" id="intitule" placeholder="Nom affiché"/>
      </section>

      <section>
        <label for="name" class="form-label">
          Intitulé
        </label>
        <div class="input-group">
          <span class="input-group-addon">freefield_</span>
          <input type="text" class="form-control" v-model="edited.name" id="name" placeholder="Nom technique"/>
        </div>
      </section>

      <section>
@@ -106,6 +118,14 @@ export default {
        <input type="checkbox" class="form-checker" v-model="edited.required" id="contrainte" />
      </section>

      <section>
        <label for="editable">
          éditable
        </label>
        <input type="checkbox" class="form-checker" v-model="edited.editable" id="editable" />
        <p>Note : Un champ editable sera disponible dans la formulaire d'édition/création. Les champs non-éditables sont généralement alimentés par une source tiers / une procédure spécifique</p>
      </section>

      <section>
        <label for="description">
          Description
@@ -134,10 +154,15 @@ export default {
      <h3 class="card-title">
        <code>[{{ field.type }}]</code>
        {{ field.label }}
        <em>({{ field.name }})</em>
        <span class="cartouche primary" v-if="field.required">
          <span class="icon-pin"></span>
          requis
        </span>
        <span class="cartouche secondary" v-if="field.editable">
          <span class="icon-pencil"></span>
          éditable
        </span>
        <div class="onright btn-group">
          <div class="btn btn-sm btn-danger" @click="handlerDelete(field)">Supprimer</div>
          <div class="btn btn-sm btn-primary" @click="handlerEditStart(field)">Modifier</div>