En fait, en analysant mieux les problèmes, je propose de diminuer le nombre d'objets dans le gestionnaire, ce qui diminue la taille du JSON, par voie de conséquence.
Qu'est ce qu'un "super-appareil" ?C'est une liste de positions de lames d'appareils de voie.
Cette liste est optimisée, réduite aux seules positions constructives et améliorant la sécurité.
Cette liste peut concerner plusieurs appareils de voie simples.
Une position correspond à un bouton sur le TCO.
Je noterai SU le super-appareil, pour plus de simplicité d'écriture.
1°) Aiguillage :C'est le SU le plus simple, avec seulement 2 positions : gauche et droite.
2°) Traversée simple :Lui aussi a 2 positions, virtuelles (tout droit 1 et tout droit 2)
3°) TJS :SU à 3 positions (tout droit 1, tout droit 2 et dévié).
Cela correspond au câblage où 3 boutons suffisent (avec des diodes)
4°) TJD :SU à 4 positions.
5°) TripleSU à 3 positions
6°) Bretelle simple :
SU à 2 positions, concernant 2 aiguillages. Il n'y a même pas besoin de diodes.
7°) Bretelle double :SU à 3 positions, concernant 4 aiguillages
8°) Triple + bretelle : Qu'il y ait une ou 2 bretelles simples impliquant un triple, il n'y a que 3 positions.
Ma proposition est la suivante :1°) On renomme la partie "appareils" en "moteurs" : c'est la liste des moteurs d'aiguille
2°) On supprime la partie "bretelles"
3°) Dans la partie "zones", on définit les VoisP et VoisI en indiquant la position du SU correspondant
4°) Dans la partie "Super-appareils", on définit une liste de positions possibles.
Exemples d'applications sur le réseau de test :
---------------------------------------------------------------------------------
Z24 avant :
"Z24" : {
"nom" : "Z24",
"voisP" : "Z25",
"voisI" : [["Z220","a18","gauche","999"],["Z230","a18","droite","999"]],
"no" : 22
},
Z24 après :
"Z24" : {
"nom" : "Z24",
"voisP" : "Z25",
"voisI" : [["Z220","Su18","0","999"],["Z230","Su18","1","999"]],
"no" : 22
},
Quasiment pas de changement pour une aiguille isolée. J'ai pris Su18 au pif, pour l'exemple.
"Su18" : {
"nom" : "Su18",
"positions" : [["a18", "gauche"], ["a18", "droite"]],
"no", 28
},
----------------------------------------------------------------------------------------------
Z2, Z6, Z39 avant :
"Z2" : {
"nom" : "Z2",
"voisP" : "Z3",
"voisI" : [["Z1","a15","droite","999"],["Z6","a15","gauche","999"]],
"no" : 2
},
"Z6" : {
"nom" : "Z6",
"voisP" : "Z400",
"voisI" : [["Z39","a16","droite","999"],["Z2","a16","gauche","999"]],
"no" : 6
},
"Z39" : {
"nom" : "Z39",
"voisP" : "Z7",
"voisI" : [["Z500","a13","gauche","999"],["Z6","a13","droite","999"]],
"no" : 37
},
Et ça devient :
"Z2" : {
"nom" : "Z2",
"voisP" : "Z3",
"voisI" : [["Z1","Su19","1","999"],["Z400","Su19","2","999"]],
"no" : 2
},
"Z6" : {
"nom" : "Z6",
"voisP" : "Z400",
"voisI" : [["Z7","Su19","2","999"],["Z3","Su19","3","999"]],
"no" : 6
},
"Z39" : {
"nom" : "Z39",
"voisP" : "Z7",
"voisI" : [["Z500","Su19","0","999"],["Z4","Su19","3","999"]],
"no" : 37
},
Avec :
"Su19" : {
"nom" : "Su19",
"positions" : [["a13", "gauche"],["a15", "droite"],
[["a13", "gauche"],["a15", "gauche"],["a16", "gauche"]],
[["a13", "droite"],["a15", "droite"],["a16", "droite"]]]
"no", 28
},
On pourrait trouver ça un peu compliqué, mais on passe de 3 aiguilles (a13, a15 et a16) à un seul SU (Su19) à 4 positions. Notez que les zones voisines ont changé.
Un seul SU, mais 3 zones. Et plus de bretelles.
Denis
