// ***********************************************************
/**
* Fonction qui ferme les menus secondaires éventuellement ouverts
* et annule les actions en cours.
*/
ferme_menus = function()
{
$(".menu_secondaire").css("display","none");
$(".bouton_menu").css("background-color","white");// Remet tous les boutons en blanc
resetActions();
}
// ***********************************************************
// Ouvre le sous-menu "editer" et referme les autres.
//Si déjà ouvert, ça le ferme
ouvre_ferme_menu_editer = function()
{
if($("#menu_editer").css("display")=="none")
{
ferme_menus();
$("#menu_editer").css("display","block");
$("#bouton_editer").css("background-color","#FFDDDD");//Met le bouton en surbrillance
schema.restorePositions(); //On remet les pièces en place (des fois qu'elles auraient bouger durant la simulation précédente) avant d'éditer
}
else
ferme_menus();
}
// ***********************************************************
// Ouvre le sous-menu "editer" et referme les autres.
//Si déjà ouvert, ça le ferme
ouvre_ferme_menu_simuler = function()
{
if($("#menu_simuler").css("display")=="none")
{
ferme_menus();
$("#menu_simuler").css("display","block");
$("#bouton_simuler").css("background-color","#FFDDDD");//Met le bouton en surbrillance
schema.sauvePositions(); //On sauvegarde les positions initiales
}
else
{
ferme_menus();
schema.restorePositions(); //On remet les pièces en place (des fois qu'elles auraient bouger durant la simulation précédente) avant d'éditer
}
}
// ***********************************************************
// Ajout d'une classe d'équivalence
place_new_CE=function()
{
if(ACTION == "ajoute une CE")
resetActions();
else
{
resetActions();
ACTION="ajoute une CE";
SOUS_ACTION="";
$("#bouton_add_CE").css("background-color","#FFDDDD"); //Met le bouton en surbrillance
//Ajout d'une pivot animée sur le curseur
suiveur.addChild(new Classe_Equivalence_Flottante());
}
}
// ***********************************************************
// Ajout d'une classe d'équivalence
lance_new_dessin=function()
{
if(ACTION == "dessin") // Si on clique pour la 1ere fois (pas 2 fois d'affilé)
resetActions();
else
{
resetActions();
update_liste_CE();
ACTION = "DESSIN"
SOUS_ACTION = "ATTENTE_DEMARRAGE"
$("#menu_selection_CE").css("display","block");
}
}
// ***********************************************************
// Ajout d'une liaison pivot
place_new_pivot=function()
{
if(ACTION == "ajoute liaison" && SOUS_ACTION == "pivot") // Si on clique pour la 1ere fois (pas 2 fois d'affilé)
resetActions();
else
{
resetActions();
//Update des listes
$("#menu_selection_pieces").css("display","block");
update_liste_CE1();
update_liste_CE2();
update_liste_CE1();
ACTION="ajoute liaison";
SOUS_ACTION="pivot";
$("#bouton_add_liaison_pivot").css("background-color","#FFDDDD");
//Ajout d'une pivot animée sur le curseur
suiveur.addChild(new PivotFlottante());
}
}
// ***********************************************************
/** Fonction qui ajoute la liaison dans chaque classe d'équivalence à partir des informations globales.
@param {Number|Classe_Equivalence} [_i=Voir_menu_déroulant] - Numéro de la classe d'équivalence 1 (ou bien référence vers cette classe). Si absent : récupère le numéro dans le menu déroulant (si placé manuellement).
@param {Number|Classe_Equivalence} [_j=Voir_menu_déroulant] - Numéro de la classe d'équivalence 2 (ou bien référence vers cette classe). Si absent : récupère le numéro dans le menu déroulant (si placé manuellement).
@param {String} [_liaison=Voir_menu_déroulant] - Nom de la liaison, parmi : "pivot", "glissiere". Si absent, récupère celle du menu déroulant (si placé manuellement).
@param {Position} [_centre=Position_de_la_souris] - Position de la liaison à placer.
@return {Boolean} 'true' si la classe est bloquée. 'false' sinon.
*/
ajouteLiaison = function(_i,_j,_liaison,_centre)
{
if(typeof(_i)=="undefined")
var classe1 = getClasse1();
else if(_i instanceof Classe_Equivalence)
var classe1 = _i
else
var classe1 = schema.classes[_i]
if(typeof(_j)=="undefined")
var classe2 = getClasse2();
else if(_j instanceof Classe_Equivalence)
var classe2 = _j
else
var classe2 = schema.classes[_j]
if(typeof(_liaison)=="undefined")
var liaison = SOUS_ACTION;
else
var liaison = _liaison
if(typeof(_centre)=="undefined")
var centre = {x:schema.XSOURIS(),y:schema.YSOURIS(),contexte:SCHEMA}
else
var centre = _centre
var liaisonMale = null;
var liaisonFemelle = null;
if(liaison == "pivot")
{
liaisonMale = new PivotMale();
liaisonFemelle = new PivotFemelle();
liaisonMale.rotation=180;
liaisonMale.couleur(classe1.couleur());
liaisonMale.demiSoeur(liaisonFemelle);
liaisonFemelle.couleur(classe2.couleur());
liaisonFemelle.demiSoeur(liaisonMale);
classe1.ajouteDemiLiaison(liaisonMale,centre);
classe2.ajouteDemiLiaison(liaisonFemelle,centre);
}
if(liaison == "glissiere")
{
liaisonMale = new GlissiereMale();
liaisonFemelle = new GlissiereFemelle();
liaisonMale.demiSoeur(liaisonFemelle);
liaisonFemelle.demiSoeur(liaisonMale);
liaisonMale.couleur(classe1.couleur());
liaisonFemelle.couleur(classe2.couleur());
classe1.ajouteDemiLiaison(liaisonMale,centre);
classe2.ajouteDemiLiaison(liaisonFemelle,centre);
}
//On va recentrer l'origine des CE
//classe1.recentreOrigine();
//classe2.recentreOrigine();
var liaison = {L1:liaisonMale, L2:liaisonFemelle}
LISTE_LIAISONS.push(liaison);
return liaison
}
// ******************************************************
// Fonction lance ou stop la simulation
lancer_simulation = function()
{
if(ACTION != "simule")
{
resetActions();
ACTION = "simule"; //on lance la simulation
$("#bouton_lancer_simulation img").attr('src','./sources/images/icone_simule_pause.svg');
$("#bouton_lancer_simulation").css("background-color","#FFDDDD");
//schema.tSimulation(0); //On réinitialise le temps de simulation
}
else
{
resetActions();
}
}
// ********************************************************
// Remet la simulation dans sa position initiale
function reset_simulation()
{
schema.restorePositions();
schema.tSimulation(0); //On réinitialise le temps de simulation
}
// *********************************************************
// Fonction qui sélectionne une classe d'équivalence
// classe peut être une référence vers une classe d'équivalence, ou bien son numéro
// --> Equivalent à maClasse.selectionne()
selectionneClasse = function(classe)
{
if(typeof classe=="number")
classe = schema.classes[classe]
classe.selectionne();
}
// **********************************************************
// Fonction qui désélectionne toutes les classes d'équivalence et leur contenu
deselectionneToutLeMonde = function()
{
for(var i=0 ; i<schema.classes.length;i++)
{
schema.classes[i].deselectionne()
CLASSE = -1
}
}
// *********************************************************
// Fonction qui nous place en mode "sélection"
mode_selection = function()
{
if(ACTION == "SELECTION")
{
ACTION = ""
$("#bouton_select").css("background-color","white");//Met le bouton en surbrillance
deselectionneToutLeMonde();
}
else //On rentre dans le mode sélection
{
ACTION = "SELECTION";
$("#bouton_select").css("background-color","#FFDDDD");//Met le bouton en surbrillance
}
}
// *********************************************************
// Fonction qui entame la manipulation (simulation) à la main
lancer_agir = function()
{
if(ACTION == "MANIP")
resetActions();
else
{
resetActions();
ACTION="MANIP";
SOUS_ACTION="PREPARE";
$("#bouton_agir").css("background-color","#FFDDDD"); //Met le bouton en surbrillance
//Ajout d'une pivot animée sur le curseur
suiveur.addChild(new AccrocheFlottante());
}
}
// *********************************************************
// Fonction qui ouvre la boite de dialogue d'ouverture
ouvre_ferme_menu_ouvrir = function()
{
//Supprime le contenu
$("#dialog_ouvrir_contenu").empty();
//met le'icone
$("#dialog_ouvrir_contenu").append("<div style='text-align:center;'><img style='width:50px;' src='./sources/images/chargement.svg' alt='Chargement...'/></div>");
$("#dialog_ouvrir").dialog("open");
//Requete liste des mecanismes
$.post( "repondeur.php",
{action:"getMecanismes"},
getMechanisme_callback,
"json"
)
}
// *************************************************
// Fonction callback qui recoit la liste des
getMechanisme_callback = function(data)
{
var mecanismes = data.mecanismes
//Supprime le contenu
$("#dialog_ouvrir_contenu").empty();
for(i=0;i<mecanismes.length;i++)
{
var mecanism = mecanismes[i];
toto=mecanism;
var nom = mecanism.nom;
var image = mecanism.image;
var lien = mecanism.lien;
var code = "<a class='mecanisme_a_ouvrir' href='?schema="+lien+"'><h1>"+nom+"</h1><div class='image_mecanisme_a_ouvrir'><img src='"+image+"'/></div></div>"
$("#dialog_ouvrir_contenu").append(code);
}
}
// *********************************************
// Fonction qui ouvre la console
ouvreConsole = function()
{
$("#dialog_console").dialog("open");
}