README pour le Repo Recherche Créneaux
Ce projet vise à développer un outil pour la recherche de créneaux automatique dans un planning.
Le but est de fournir une interface simple et intuitive pour rechercher des créneaux disponibles en fonction de différents critères, tels que les agendas par utilisateur, la date, l'heure, la durée
Le projet se base sur la récupération des évenements FREE/BUSY depuis l'api d'un calendrier (kronoligh/google/...).
- Pour trouver les créneaux, il y'a tout d'abord une génération des créneaux avec les paramètres demandés (jours, durée...) grâce à la librairie composer : rlanvin/php-rrule
- Les créneaux busys sont récupérés sur l'api iCalendar FREE/BUSYS puis normalisés cad formattés aux creneaux générés pour préparer la comparaison
- Les créneaux sont par la suite comparés avec les créneaux busys récupérés, class FBCompare
- Génération des creneaux demandés : FBCreneauxGeneres
- Récupération des busys Utilisateurs: FBUser
- Normalisation des créneaux busys : FBUser
- Comparaison entre créneaux générés / creneaux Busys : FBCompare
- Recherche de créneaux par date, heure, durée
- Affichage des créneaux disponibles sous forme de liste
- Possibilité d'envoyer une invitation aux participants réserver des créneaux
- Création Evento : crée automatiquement un sondage listant plusieurs créneaux par appels ajax sur l'application evento de chez Renater
Le projet dépend de 2 outils indispensable : Composer v2 et Yarnpkg v4
- composer.json : configuration projet pour PHP
yarn est utilisé pour gérer le projet (rôle similaire à composer pour le js)
- package.json: configuration projet pour JS
Utilisation des composants api
Dans le cadre du développement du projet, l'appel se fait sur un agenda kronolith avec le paramètre du fichier .env : URL_FREEBUSY
Pour la séléction des utilisateurs, le projet fait appel à une api : UnivParis1/wsgroups
l'api qui renvoie les identifiants des utilisateurs de type uid/displayname
Cette api est centrale à l'application (TODO: faire une demo hors UP1 lorsque l'option WSGROUP==false dans le fichier .env )
Si il n'y a pas d'appel à wsgroup, l'application est limitée fonctionnellement
Possibilité de créer un sondage sur plusieurs créneaux
- Projet Moment de chez Renater: https://sourcesup.renater.fr/projects/moment/
La configuration se fait en créant un fichier .env sur la base du fichier .env.example
- Fichier .env : mis à la racine du projet, variables de configuration
- Fichier .env.example : recense les variables de configurations avec les valeures possibles
- URL_FREEBUSY : url api récupération du calendrier.
Le projet utilise webpack pour la configuration js
- fichier de configuration: webpack.config.js
- les js sont compilés dans le fichier ** public/build/bundle.js **
historiquement, le projet utilisait requirejs pour charger les fichiers js en Asynchronous Module Definition (AMD)
- babel est configuré avec le plugin ** babel-plugin-transform-amd-to-commonjs ** pour transformer les fichiers js AMD en commonjs
- ** yarn run build ** permet de compiler les fichiers js
- ** yarn run watch ** permet de rendre lisible le js par l'extension web developper dees navigateurs web
Des tests phpunit pour éviter des régréssions sont faits.
Pour le moment, la classe testée est FBCompare
Ceux-ci se trouvent dans le répertoire tests/FBCompareTest-ID/
Une variable d'environnement doit être initialisée pour choisir le numéro du test
- Exemple commande pour choisir le test 1:
FBCompareTestId=1 vendor/bin/phpunit tests/FBCompareTest.php
Les données de test sont sous forme de json, ce sont des données serialisées, il y'a 3 fichiers qui correspondent aux classes instanciées:
- stdenv.json : stdClass stdEnv
- fbparams.json : class FBParams
- fbform.json : class FBForm
Ce projet est sous licence Apache 2.