L'application de maintenance est largement motivée par la configuration de l'application et les schémas de l'API. Les schémas sont lus directement à partir de l'API (par D2). Les documents suivants documentent la configuration de l'application:
src/config/ ...maintenance-models.js définit les types de modèles affichés dans l'applicationfield-config/ Configuration de la configuration pour chaque type de modèlefield-order.js définit l'ordre des champs dans le formulaire pour chaque type de modèlefield-groups.js définissent le regroupement de champs pour la forme pour chaque modèle. Ceci n'est actuellement utilisé que pour les programmes, mais il pourrait être une bonne idée de l'étendre à d'autres types de modèles.field-overrides/ contient une configuration supplémentaire pour les champs qui nécessitent un comportement non standard. Le plus souvent, cela signifie des champs qui nécessitent des composants spéciaux.index.js répertorie tous les modèles qui ont un ou plusieurs surfaces de champindex.js . Certains types de modèles ou champs qui nécessitent beaucoup de logique sont séparés en sous-dossiers.inlinehelp-mapping.json spécifie le mappage de chaque section / modèle de modèle aux pages de la documentation.field-rules.js contient une logique conditionnelle qui peut être utilisée pour afficher ou masquer les champs ou définir des valeurs de champ en fonction de la valeur des autres champs.periodTypes.json contient la liste des types d'époque qui sont pris en charge par la version actuelle de l'API.disabled-on-edit/ Contient des fichiers qui répertorient les champs qui seront toujours affichés en lecture seule lorsqu'un objet est en cours de modification.index.js importe des listes de noms de champ à partir de fichiers nommés d'après chaque modèle pertinentPour mémoire, les «schémas» et les «types de modèles» sont essentiellement la même chose et ces termes sont utilisés de manière interchangeable à la fois dans l'application de maintenance et ailleurs. Les schémas sont exposés par l'API, mais tous les types de modèle ne sont pas répertoriés dans les schémas. Pour ajouter à la confusion, les "modèles" sont également parfois appelés "objets".
Pour qu'un type de modèle apparaisse dans l'application de maintenance, les conditions suivantes doivent être remplies:
src/config/maintenance-models.js Une fois ces conditions remplies, le type de modèle apparaîtra dans l'application de maintenance dans la section spécifiée dans maintenance-models.js . Lors de la création ou de l'édition de modèles du nouveau type, le formulaire ne contiendra par défaut qu'une poignée de champs prédéfinis. Pour que les champs supplémentaires soient affichés dans le formulaire, les conditions suivantes doivent être remplies:
src/config/field-config/field-order.jsL'ajout d'un nouveau modèle à la maintenance implique généralement les étapes suivantes:
src/config/maintenance-models.jssrc/config/field-config/field-order.jssrc/config/field-config/field-groups.js .src/config/field-overrides/ . Ouvrez src/config/field-overrides/index.js , importez le fichier nouvellement créé et ajoutez-le à l'objet overridesByType .src/config/field-overrides/newType.js ), commencez à ajouter des personnalisations pour les champs qui le nécessitent. Cela implique généralement de créer de nouveaux composants et / ou de remplacer certaines propriétés de champ. Regardez les remplacements de champ existants pour les exemples.** string ** dans l'interface utilisateur manquent les traductions. Ceux-ci devront être ajoutés aux fichiers de traduction situés dans src/i18n/ . Certaines chaînes sont générées dynamiquement et ne peuvent apparaître que dans certaines situations, par exemple lorsque vous essayez de supprimer un modèle. Remarque: Le workflow de traduction devrait à un moment donné changer pour utiliser i18Next en faveur de d2.i18n . Certains modèles nécessitent une personnalisation au-delà de ce qui est possible en utilisant les remplacements de configuration et de champ. Dans ces cas, il peut être nécessaire de créer un nouveau composant de haut niveau et d'associer ce composant à un itinéraire spécial dans src/router.js
Des exemples de cette approche comprennent:
src/EditModel/event-program/EditEventProgram.component.jssrc/EditModel/EditDataEntryForm.component.js