Fichiers de configuration
Tout les fichiers de configurations de React-mini-fk sont rédigés en syntaxe JSON dans des fichiers nommés config.json
et situés à la racine du bundle.
Cela permet une ecriture et une lecture simple et intuitive de la configuration.
Chaque fichier de configuration permet le référencement du bundle concerné dans l'application.
Ceci implique que certaines propriétés soient obligatoirement présentes dans n'importe quel fichier de configuration.
Glossaire
bundle
=plugin
: une partie de l'applicationmodule
: une partie d'un bundlecomposant
: une partie d'un module ou plus simplement un composant React
Options communes de base
"key": "Plugin1",
"title": "Plugin-1",
"accessControlAction": "read",
"accessControlEntity": "User",
"entryPoint": {},
"mods": [{}, {}, ...]
Options communes à tout les bundle
Propriété | Description | Statut |
---|---|---|
key | La clé unique du bundle. A ne pas modifier pour le Core | Obligatoire |
title | Le titre du bundle. Dans Core cela représente le nom de l'application | Obligatoire |
accessControlAction | Si la vérification des privilèges est activée, l'action permettant l'accès au bundle (voir @casl ability) | Facultatif |
accessControlEntity | Si la vérification des privilèges est activée, l'entité permettant l'accès au bundle (voir @casl ability) | Facultatif |
entryPoint | Le module (composant) de point d'entrée du bundle (voir Déclaration de module) (représente la plupart du temps le menu du bundle) | Obligatoire |
mods | La liste des modules du bundle | Facultatif |
Options spécifiques du core
"logo": "header-logo.png",
"externalConfEnabled": true,
"authEnabled": true
Ces options sont spécifiques au Core: Elles représentent les configurations générales de l'application
Propriété | Description | Statut |
---|---|---|
logo | le nom complet du fichier de logo situé dans /assets/img/ | Facultatif |
externalConfEnabled | Détermine si vos configurations de modules peuvent être surchargées par des données externes (BDD) ATTENTION nécéssite l'implémentation de la méthode getPluginByKey() dans core/services/CoreService.js ! | Facultatif |
authEnabled | Activation / Désactivation globale du middleware d'authentification | Facultatif |
Options spécifiques des bundles
"icon": "area-chart",
"active": true,
"position": 2
Ces options sont spécifiques des bundles
Propriété | Description | Statut |
---|---|---|
icon | Le "type" d'icône (voir ant-design pour la liste des icones disponibles) du bundle (utilisé pour les menus notemment) | Obligatoire |
active | Définit si le bundle est activé ou désactivé | Obligatoire |
position | La position de la tuile du bundle sur le menu principal | Facultatif |
Options communes avancées
Déclaration d'un module de bundle (inclus les entryPoint)
La déclaration d'un composant qu'il soit le point d'entrée ou faisant partie de la liste des sous-composants va permettre de :
- Déclarer l'emplacement du composant et de le précharger (l'importer) dans la configuration (ceci va permettre notamment d'initialiser automatiquement les routes de l'application)
- Embarquer en props dans le composant les configurations de son module et de son bundle ainsi que ses eventuels droits d'accès.
- Déclarer la route permettant d'y accéder selon les propriétés de react-router-dom
"key": "module1",
"title": "module 1 du plugin 1",
"icon": "search",
"component": "module-1/Example",
"path": "/plugin-1/module-1/:userId",
"exact": true,
"isOnMenu": true,
"withAuth": true,
"accessControlAction": "update",
"accessControlEntity": "User",
"dependencies": [{}, {}, ...]
Propriété | Description | Statut |
---|---|---|
key | La clé unique du module | Obligatoire |
title | Le titre du module | Obligatoire |
icon | Le "type" d'icône (voir ant-design pour la liste des icones disponibles) du module (utilisé pour les sous-menus notamment) | Facultatif |
component | Le chemin du composant ATTENTION : le chemin commence obligatoirement à la racine du dossier "composants" de chaque bundle (sans séparateur en début et en fin, sensible à la casse) EXEMPLE : ici le chemin complet depuis les sources du composant est en réalité /plugins/plugin-1/composants/module-1/Example , ici on a renseigné seulement module-1/Example | Obligatoire |
path | La route d'accès au composant (voir Routing) | Obligatoire |
exact | Correspond au paramètre "exact" des routes de react-router-dom: defini si la route doit être unique | Facultatif |
isOnMenu | Si le composant natif de sous menu des bundles est utilisé, determinera si un lien vers ce composant y sera présent | Facultatif |
withAuth | Si la vérification des privilèges est activée, permet de charger le composant via le middleware de vérification des privilèges | Facultatif |
accessControlAction | Si la vérification des privilèges est activée, l'action permettant l'accès au module(voir @casl ability) | Facultatif |
accessControlEntity | Si la vérification des privilèges est activée, l'entité permettant l'accès au module(voir @casl ability) | Facultatif |
dependencies | La liste des composants externes (venant d'autres bundles) dont dépend ce module (composant) | Facultatif |
Déclaration d'un composant en dépendances
Ces déclarations de dépendances vont permettre :
- d'accéder au composant dépendant depuis la configuration sans faire d'import direct dans le bundle.
- de vérifier si la dépendance est satisfaite ou non. Si elle n'est pas trouvée, le module ne sera pas chargé.
"pluginKey": "Activity",
"moduleKey": "affect",
"componentName": "TableRessources"
Propriété | Description | Statut |
---|---|---|
pluginKey | La clé unique du bundle externe portant le composant ciblé | Obligatoire |
moduleKey | La clé unique du module dans le bundle ciblé | Obligatoire |
dependencies | Le nom du fichier du composant ciblé (doit se situer à la racine du module) | Obligatoire |
Accès aux configurations
Il est possible d'accéder aux configurations depuis n'importe quel composant.
Accéder à la configuration d'un bundle
Permet d'obtenir un objet contenant la configuration entière d'un bundle par sa clé unique.
Cet objet contiendra la configuration complète à savoir la configuration de base, les modules préchargés ainsi que leurs dépendances
getConfiguration(key)
Propriété | Description |
---|---|
key | La clé unique du bundle |
Accéder à la configuration d'un module
Permet d'obtenir un objet contenant la configuration d'un module par la clé de son bundle parent et sa propre clé unique.
Cet objet contiendra la configuration du module seulement, à savoir, la configuration du module ainsi que ses éventuelles dépendances
getModuleConfiguration(plugin, modKey)
Propriété | Description |
---|---|
plugin | La clé unique du bundle |
modKey | La clé unique du module recherché |
Récuperer une dépendance
Permet d'obtenir le composant recherché si celui-ci est préalablement déclaré en dépendance du module visé.
Le principal interêt est de ne plus avoir à importer directement des composants externes dans les composants qui en dépendent. (evite les appels directs à des fichiers spécifiques et gère les dépendances insatisfaites = réduction des responsabilités)
getDependencieComponent(plugin, module, component)
Propriété | Description |
---|---|
plugin | La clé unique du bundle |
module | La clé unique du module |
component | Le nom du composant recherché (nom du fichier cible) renseigné comme dépendance du module |