On part sur la base d'un schéma mermaid. En cliquant sur les différents éléments, on fait apparaître / charge les données de la cloison, dans un formulaire d'édition.
Si on utilise les block pour représenter les conditions limites et les bassins, et les labels des connexions pour représenter les cloisons, l'exemple réel de pré-barrage complexe proposé par Dom serait représenté comme suit:
Si l'événement click sur ces blocks et ces connexions peuvent être utilisés pour afficher des formulaires spécifiques à chaque objet qu'il représente, on est bon.
L'amont et l'aval peuvent faire référence aux paramètres de PreBarrage (Z1, Z2, Q). Tous les autres objets (bassins et cloisons) sont des PreBarrage.children. Il existe différents pointeurs vers ce tableau:
PreBarrage.bassins pour les bassins dans l'ordre amont-aval
PreBarrage.cloisonsAmont et PreBarrage.cloisonsAval pour toutes les cloisons connectées à l'amont et à l'aval du pré-barrage
PreBarrage.bassin[i].cloisonsAmont et PreBarrage.bassin[i].cloisonsAval pour toutes les cloisons situées à l'amont ou à l'aval du bassin i.
Chaque cloison sait aussi à quoi elle est connecté à l'amont et à l'aval avec ses attributs bassinAmont et bassinAval. Si l'attribut est undefined cela signifie que la cloison est connecté avec l'amont du pré-barrage si bassinAmont===undefined et avec l'aval du pré-barrage si bassinAval===undefined.
By Dorchies David on 2020-05-12T12:35:09 (imported from GitLab)
Quand on sélectionne une cloison, il faudra proposer en plus deux listes déroulantes pour définir à quoi elle est attachée à l'amont et a l'aval. Cette liste contiendra: amont, bassin 1, ..., bassin n, aval. Chaque liste sera filtrée en fonction de l'autre (On ne peut pas sélectionner à l'aval un bassin plus à l'amont que celui sélectionné à l'amont et inversement).
Ces paramètres seront directement liés à PbCloison.BassinAmont et PbCloison.BassinAval.
By Dorchies David on 2020-05-12T12:41:48 (imported from GitLab)
lorsqu'on supprime un bassin, relier les cloisons concernées à l'amont ou l'aval de la rivière, au lieu de les supprimer
bouton "ajouter une cloison" : ouvre une modal dans laquelle on choisit le bassin amont (ou l'amont de la rivière) et le bassin aval (ou l'aval de la rivière)
griser le bouton "calculer" s'il n'y a pas au moins un bassin et un chemin amont-aval
utiliser des Node Mermaid pour les cloisons, afin de pouvoir leur associer un ID (UID de la PbCloison); leur donner un style différent et les relier aux bassins par deux flèches, dont une sans tête à l'amont
si deux cloisons lient la même paire de bassins, suffixer la 2è par "(1)" et ainsi de suite pour les suivantes
se baser sur les UID pour ne pas dessiner deux fois le même Node dans Mermaid
afficher le code Markdown Mermaid dans un div invisible (debug)
formulaire : afficher les champs calculables "cote amont", "cote aval", "débit" lorsqu'on clique sur l'amont ou l'aval de la rivière
bouton "dupliquer une cloison"
mettre en surbrillance l'élément du graphique actuellement sélectionné
après une suppression, mettre l'élément sélectionné à undefined
sélecteur données / résultats : cliquer fait disparaître le bloc contenant le formulaire, et fait remonter le bloc de résultats à sa place (jouer sur le CSS "flex"); utiliser le même design que le "quicknav"
By Mathias Chouet on 2020-06-09T15:33:17 (imported from GitLab)
Une configuration avec l'ajout de B3-B5 paraît peut probable car physiquement cela veut dire que le bassin 4 serait isolé au centre de la rivière avec d'un côté B2-B5 et Amont-B5 et de l'autre B3-B5.
J'arrive cependant à produire un graphe planaire mais je ne sais pas à quel algorithme ça correspond vu qu'à un moment Mermaid inverse gauche et droite...
lorsqu'on clique sur une cloison, afficher dans le formulaire à droite les bassins amont et aval dans des sélecteurs, ce qui permet de déplacer la cloison
au moment de calculer, s'il y a plusieurs cloisons entre une même paire de bassins, proposer de les fusionner (peut être pénible si déclenché à chaque calcul…)
ou alors : un bouton "fusionner les cloisons", actifs s'il y a au moins un cas de cloisons multiples entre deux mêmes bassins, qui affiche une popup proposant de cocher dans une liste les groupes de cloisons à fusionner
bouton "exporter en PNG" (pas prioritaire)
résultats : afficher les résultats de l'objet sélectionné (bassin, cloison, ou résultats concernant l'ensemble de la passe)
vérifier la mise à jour de la validité (bouton calculer) lorsque le formulaire affiché change
améliorer l'algo de tri du graphique pour éviter les croisements (voir cette note)
peupler le template_container des ouvrages sur les cloisons, et l'afficher en dessous des sélecteurs de bassins
permettre de déplacer les bassins qui ne sont connectés à rien, ou seulement à l'amont ou l'aval
sauver / charger une session avec un PreBarrage
faire varier la passe
liens
ajouter des tests dans le modèle :
pas de cote aval supérieure à la cote amont
pas de cote de radier de bassin supérieure à la cote amont
pas de cote de radier d'ouvrage de cloison inférieure à la cote de radier du bassin amont
dessiner le profil des bassins sous forme de graphique, comme pour la PAB mais sans les ZDV
lorsque 2 PreBarrages ou plus existent, se souvenir du panneau affiché (données ou résultats) pour chacun d'entre-eux
vérifier l'affichage des logs (récapitulatif dans un composant de log "général")
export de la mort : produire un gigantesque tableau avec en lignes les conditions limites (si ça varie) et en colonne toutes les variables de toutes les cloisons/bassins
By Mathias Chouet on 2020-09-09T13:45:40 (imported from GitLab)