Commit 6d2119a5 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Refonte export Axios et WIP missions

parent 8e82b83a
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
<template>
    <div class="modal fade" :id="id" tabindex="-1" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">{{ title }}</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <slot name="body"></slot>
                </div>
                <div class="modal-footer">
                    <slot name="footer"></slot>
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fermer</button>
                </div>
            </div>
        </div>
    </div>
</template>

<script>

export default {
    name: "UModal",
    props: {
        id: {required: true, type: String},
        title: {required: true, type: String},
    },
}
</script>

<style scoped>

</style>
 No newline at end of file
+14 −6
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@
                                <label class=" form-label">Nombre d'heures prévisionnelles</label>
                                <div class="input-group mb-3">
                                    <div class="form-control">{{ heuresLib }}</div>
                                    <button onclick="alert('non implémenté')" class="input-group-btn btn btn-secondary">Suivi</button>
                                    <button class="input-group-btn btn btn-secondary" data-bs-toggle="modal" data-bs-target="#details"><u-icon name=""/> Détails</button>
                                </div>
                            </div>
                        </div>
@@ -97,8 +97,16 @@
                </div>
            </div>
        </form>

    </div>
    <u-modal id="details" title="Détail des heures">
        <template #body>
        Mon détail des heures
        </template>
        <template #footer>
            Mon test de footer
        </template>
    </u-modal>

</template>

<script>
@@ -129,12 +137,12 @@ export default {
        heuresLib: function () {
            if (this.mission.heures === null || this.mission.heures === 0) {
                return 'Aucune heure saisie';
            } else if (this.mission.heures - this.mission.heuresValidees == 0) {
                return this.mission.heures + ' heures validées';
            } else if (this.mission.heures == this.mission.heuresValidees) {
                return this.mission.heures + ' heures (validées)';
            } else if (this.mission.heuresValidees == 0) {
                return this.mission.heures + ' heures à valider';
                return this.mission.heures + ' heures (non validées)';
            } else {
                return this.mission.heures + ' heures dont ' + (this.mission.heures - this.mission.heuresValidees) + ' à valider';
                return this.mission.heures + ' heures (' + this.mission.heuresValidees + ' validées)';
            }
        }
    },
+1 −0
Original line number Diff line number Diff line
export default {
    /* UI components */
    uIcon: 'Application/UI/UIcon',
    uModal: 'Application/UI/UModal',

    /* App common components */
    utilisateur: 'Application/Utilisateur',
+34 −2
Original line number Diff line number Diff line
@@ -3,7 +3,9 @@
namespace Application\Controller\Plugin;

use Application\Constants;
use Application\Interfaces\AxiosExtractor;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Query;
use Laminas\Mvc\Controller\Plugin\AbstractPlugin;
use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
use Laminas\View\Model\JsonModel;
@@ -33,8 +35,13 @@ class Axios extends AbstractPlugin



    public function send(array $data): JsonModel
    public function send($data): JsonModel
    {
        if ($data instanceof Query) {
            $data = $data->getResult();
        }
        $data = self::extract($data);

        /** @var FlashMessenger $flashMessenger */
        $flashMessenger = $this->controller->flashMessenger();

@@ -71,9 +78,22 @@ class Axios extends AbstractPlugin
            return null;
        }

        if (is_array($object)) {
            $result = [];
            foreach ($object as $index => $sobj) {
                $sObjData = self::extract($sobj, $properties);
                if (isset($sObjData['id'])) {
                    $index = $sObjData['id'];
                }
                $result[$index] = $sObjData;
            }

            return $result;
        }

        $result = [];

        if (method_exists($object, 'getId')) {
        if (is_object($object) && method_exists($object, 'getId')) {
            $result['id'] = $object->getId();
        }
        if (!empty($properties)) {
@@ -89,6 +109,10 @@ class Axios extends AbstractPlugin

                $prefixes = ['get', 'is', 'has'];
                foreach ($prefixes as $prefix) {
                    if (method_exists($object, $property)) {
                        $value      = $object->$property();
                        $foundValue = true;
                    } else {
                        $method = $prefix . ucfirst($property);
                        if (method_exists($object, $method)) {
                            $value      = $object->$method();
@@ -96,6 +120,7 @@ class Axios extends AbstractPlugin
                            break;
                        }
                    }
                }

                if ($foundValue) {
                    if (is_object($value)) {
@@ -105,8 +130,13 @@ class Axios extends AbstractPlugin
                            $oriVals = $value;
                            $value   = [];
                            foreach ($oriVals as $oriVal) {
                                if (method_exists($oriVal, 'getId')) {
                                    $id         = $oriVal->getId();
                                    $value[$id] = self::extract($oriVal, $subProperties);
                                } else {
                                    $value[] = self::extract($oriVal, $subProperties);
                                }
                            }
                        } else {
                            $value = self::extract($value, $subProperties);
                        }
@@ -114,6 +144,8 @@ class Axios extends AbstractPlugin
                    $result[$property] = $value;
                }
            }
        } elseif ($object instanceof AxiosExtractor) {
            $result = self::extract($object, $object->axiosDefinition());
        } else {
            $result['libelle'] = (string)$object;
        }
+9 −1
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Application\Entity\Db;

use Application\Interfaces\AxiosExtractor;
use UnicaenApp\Entity\UserInterface;
use UnicaenAuth\Entity\Db\AbstractUser;

@@ -9,7 +10,7 @@ use UnicaenAuth\Entity\Db\AbstractUser;
/**
 * Utilisateur
 */
class Utilisateur extends AbstractUser implements UserInterface
class Utilisateur extends AbstractUser implements UserInterface, AxiosExtractor
{
    const APP_UTILISATEUR_ID = 1;

@@ -35,6 +36,13 @@ class Utilisateur extends AbstractUser implements UserInterface



    public function axiosDefinition(): array
    {
        return ['email', 'displayName'];
    }



    /**
     * @return \Laminas\Permissions\Acl\Role\RoleInterface[]
     */
Loading