www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit bb7c20d61677e5138fab9c251866aacc90e87831
parent 6da66d41fdad15b4596e4a582210befed9fb8f38
Author: gduperon <gduperon@5d9ba3ac-444b-4713-9fb3-0b58e79229a2>
Date:   Wed, 19 May 2010 07:27:23 +0000

v4, pendant connexions

git-svn-id: https://projetud.info-ufr.univ-montp2.fr/svn/flin607-2009-gduperon@64 5d9ba3ac-444b-4713-9fb3-0b58e79229a2

Diffstat:
Mjside3/index.html | 5++---
Mjside4/bugs | 54++++++++++++++++++++----------------------------------
Ajside4/callbacks.js | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/callbacks.js~ | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mjside4/index.html | 252++++++++++++++++++++++---------------------------------------------------------
Ajside4/mvc/bloc.js | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/mvc/bloc.js~ | 20++++++++++++++++++++
Ajside4/mvc/connexion.js | 15+++++++++++++++
Ajside4/mvc/connexion.js~ | 16++++++++++++++++
Ajside4/mvc/définition.js | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/mvc/définition.js~ | 35+++++++++++++++++++++++++++++++++++
Ajside4/mvc/instance-bloc.js | 13+++++++++++++
Ajside4/mvc/instance-bloc.js~ | 12++++++++++++
Ajside4/mvc/instance-connexion.js | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/mvc/instance-connexion.js~ | 16++++++++++++++++
Ajside4/mvc/liste-définitions.js | 6++++++
Ajside4/mvc/liste-ports.js | 46++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/mvc/liste-ports.js~ | 35+++++++++++++++++++++++++++++++++++
Ajside4/mvc/monde.js | 8++++++++
Ajside4/mvc/port.js | 23+++++++++++++++++++++++
Ajside4/mvc/port.js~ | 10++++++++++
Ajside4/mvc/tabs-définitions.js | 92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/mvc/tabs-définitions.js~ | 92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/mvc/titre-bloc.js | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/mvc/titre-définition.js | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/mvc/titre-définition.js~ | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Ajside4/singleton.js | 15+++++++++++++++
Ajside4/singleton.js~ | 13+++++++++++++
Ajside4/style2.css | 40++++++++++++++++++++++++++++++++++++++++
Ajside4/style2.css~ | 38++++++++++++++++++++++++++++++++++++++
Mjside4/test.js | 28+++++++++++++++++++---------
Ajside4/vues.js | 20++++++++++++++++++++
32 files changed, 1165 insertions(+), 229 deletions(-)

diff --git a/jside3/index.html b/jside3/index.html @@ -150,9 +150,8 @@ <table class="définitions vPorts-sortie"></table> <div class="définitions vContenusTabs"> <div class="définition vCorps vAucune-définition"> - Aucune définition. - <br/> - Cliquez sur le + ci-dessus pour en créer une. + <h4>Aucune définition.</h4> + <p>Cliquez sur le + ci-dessus pour en créer une.</p> </div> </div> </div> diff --git a/jside4/bugs b/jside4/bugs @@ -1,33 +1,19 @@ -TODO : -- modèle ports -~ Ajout de ports à un bloc -# -X ré-organisation des ports -# -Connexions - vue -Connexions - modèle -# -Connexions - déplacement du port -Connexions autorisées et ports autorisés. -# -types de définitions - interface -# -types de définitions - modèle -# -#. -fenêtres "debug" (avec un pseudo-port qui va "piquer" sur un port, une connexion, … -->interface -# -# -"exécution" (pour les fenêtres debug) -# -# -suppression de blocs, etc. remplissage des vues à la création -(Lors de la création de la vue d'une instance-bloc, les définitions existantes ne sont pas encore ajoutées.) -# -annulation -# -# -enregistrement -# -# -\ No newline at end of file +Être moins bête. !important + +Renomer les onAddXyz() en xyz.onAdd() + +TODO: +Afficher les connexions +- Chercher la vue du port d'entrée +- Chercher la vue du port de sortie +- Connecter + +Types de définitions +- Afficher 2 boutons +- ajouter un champ texte +- toggle sur le champ texte + +Eval +- chercher la connexion qui va sur le port +- chercher d'où elle vient +- faire des eval quelque part (?) +\ No newline at end of file diff --git a/jside4/callbacks.js b/jside4/callbacks.js @@ -0,0 +1,70 @@ +Array.prototype.remove = function(i) { + if (typeof i != "number") + i = this.indexOf(i); + this.splice(i,1); + return i; +} + +Array.prototype.insert = function(v, i) { + if (i === undefined) + i = this.length; + this.splice(i,0,v); + return i; +} + +function faireCallbacks(liste) { + var a = $.makeArray(arguments); + a.shift(); + for (var i = 0; i < liste.length; i++) { + liste[i].apply(a[0], a); + } +} + +function makeCollection(obj, nom) { + var Nom = nom.charAt(0).toUpperCase() + nom.substring(1); + obj[nom] = []; + obj['add' + Nom] = function(stuff, position) { + obj[nom].insert(stuff, position); + faireCallbacks(obj['cbAdd' + Nom], obj, stuff, position); + }; + obj['cbAdd' + Nom] = []; + obj['onAdd' + Nom] = function(callback) { + obj['cbAdd' + Nom].push(callback); + }; + obj['remove' + Nom] = function(position) { + obj[nom].remove(position); + faireCallbacks(obj['cbRemove' + Nom], obj, position); + }; + obj['cbRemove' + Nom] = []; + obj['onRemove' + Nom] = function(callback) { + obj['cbRemove' + Nom].push(callback); + }; + obj['move' + Nom] = function(from, to) { + var stuff = obj[nom][from]; + obj[nom].remove(from); + obj[nom].insert(stuff, to); + faireCallbacks(obj['cbMove' + Nom], obj, from, to); + }; + obj['cbMove' + Nom] = []; + obj['onMove' + Nom] = function(callback) { + obj['cbMove' + Nom].push(callback); + }; +} + +// makeField(this, , new ()); +function makeField(obj, nom, defaultValue) { + var Nom = nom.charAt(0).toUpperCase() + nom.substring(1); + obj['_' + nom] = defaultValue; + obj[nom] = function(val) { + if (val === undefined) { + return obj['_' + nom]; + } else { + obj['_' + nom] = val; + faireCallbacks(obj['cbChange' + Nom], obj, val); + } + }; + obj['cbChange' + Nom] = []; + obj['onChange' + Nom] = function(callback) { + obj['cbChange' + Nom].push(callback); + }; +} +\ No newline at end of file diff --git a/jside4/callbacks.js~ b/jside4/callbacks.js~ @@ -0,0 +1,70 @@ +Array.prototype.remove = function(i) { + if (typeof i != "number") + i = this.indexOf(i); + this.splice(i,1); + return i; +} + +Array.prototype.insert = function(v, i) { + if (arguments.length == 1) + i = this.length; + this.splice(i,0,v); + return i; +} + +function faireCallbacks(liste) { + var a = $.makeArray(arguments); + a.shift(); + for (var i = 0; i < liste.length; i++) { + liste[i].apply(a[0], a); + } +} + +function makeCollection(obj, nom) { + var Nom = nom.charAt(0).toUpperCase() + nom.substring(1); + obj[nom] = []; + obj['add' + Nom] = function(stuff, position) { + obj[nom].insert(stuff, position); + faireCallbacks(obj['cbAdd' + Nom], obj, stuff, position); + }; + obj['cbAdd' + Nom] = []; + obj['onAdd' + Nom] = function(callback) { + obj['cbAdd' + Nom].push(callback); + }; + obj['remove' + Nom] = function(position) { + obj[nom].remove(position); + faireCallbacks(obj['cbRemove' + Nom], obj, position); + }; + obj['cbRemove' + Nom] = []; + obj['onRemove' + Nom] = function(callback) { + obj['cbRemove' + Nom].push(callback); + }; + obj['move' + Nom] = function(from, to) { + var stuff = obj[nom][from]; + obj[nom].remove(from); + obj[nom].insert(stuff, to); + faireCallbacks(obj['cbMove' + Nom], obj, from, to); + }; + obj['cbMove' + Nom] = []; + obj['onMove' + Nom] = function(callback) { + obj['cbMove' + Nom].push(callback); + }; +} + +// makeField(this, , new ()); +function makeField(obj, nom, defaultValue) { + var Nom = nom.charAt(0).toUpperCase() + nom.substring(1); + obj['_' + nom] = defaultValue; + obj[nom] = function(val) { + if (val === undefined) { + return obj['_' + nom]; + } else { + obj['_' + nom] = val; + faireCallbacks(obj['cbChange' + Nom], obj, val); + } + }; + obj['cbChange' + Nom] = []; + obj['onChange' + Nom] = function(callback) { + obj['cbChange' + Nom].push(callback); + }; +} +\ No newline at end of file diff --git a/jside4/index.html b/jside4/index.html @@ -20,10 +20,7 @@ <script type="text/javascript" src="jquery/ui/jquery.ui.widget.js"></script> <script type="text/javascript" src="jquery/ui/jquery.ui.mouse.js"></script> <script type="text/javascript" src="jquery/ui/jquery.ui.draggable.js"></script> -<!-- <script type="text/javascript" src="jquery/ui/jquery.ui.droppable.js"></script>--> <script type="text/javascript" src="jquery/ui/jquery.ui.resizable.js"></script> -<!-- <script type="text/javascript" src="jquery/ui/jquery.ui.sortable.js"></script>--> -<!-- <script type="text/javascript" src="jquery/ui/jquery.ui.selectable.js"></script>--> <script type="text/javascript" src="jquery/ui/jquery.ui.position.js"></script> <script type="text/javascript" src="jquery/ui/jquery.effects.core.js"></script> <script type="text/javascript" src="jquery/jquery.layout.js"></script> @@ -31,203 +28,92 @@ <!-- jQuery - mes extensions --> <script type="text/javascript" src="extensions-jQuery.js"></script> - <!-- Modèle / Vue - fonctions utilitaires et explications --> - <script type="text/javascript" src="modele.js"></script> - <script type="text/javascript" src="vue.js"></script> + <!-- Fonctions utilitaires --> + <script type="text/javascript" src="callbacks.js"></script> + <script type="text/javascript" src="singleton.js"></script> + <script type="text/javascript" src="vues.js"></script> <!-- MVC --> <script type="text/javascript" src="mvc/monde.js"></script> - - <script type="text/javascript" src="mvc/barre-outils.js"></script> - - <script type="text/javascript" src="mvc/log.js"></script> - <script type="text/javascript" src="mvc/instance-log.js"></script> - - <script type="text/javascript" src="mvc/recherche.js"></script> - <script type="text/javascript" src="mvc/instance-recherche.js"></script> - <script type="text/javascript" src="mvc/resultat-recherche.js"></script> - <script type="text/javascript" src="mvc/bloc.js"></script> - <script type="text/javascript" src="mvc/instance-bloc.js"></script> - <script type="text/javascript" src="mvc/definitions.js"></script> - <script type="text/javascript" src="mvc/ports.js"></script> - <script type="text/javascript" src="mvc/port-in-ports.js"></script> + <script type="text/javascript" src="mvc/liste-ports.js"></script> + <script type="text/javascript" src="mvc/titre-bloc.js"></script> + <script type="text/javascript" src="mvc/liste-définitions.js"></script> <script type="text/javascript" src="mvc/port.js"></script> - - <script type="text/javascript" src="mvc/definition.js"></script> + <script type="text/javascript" src="mvc/tabs-définitions.js"></script> + <script type="text/javascript" src="mvc/définition.js"></script> + <script type="text/javascript" src="mvc/titre-définition.js"></script> + <script type="text/javascript" src="mvc/instance-bloc.js"></script> <script type="text/javascript" src="mvc/connexion.js"></script> + <script type="text/javascript" src="mvc/instance-connexion.js"></script> <!-- Test --> <script type="text/javascript" src="test.js"></script> <!-- Apparence --> <link rel="stylesheet" type="text/css" href="style.css" /> + <link rel="stylesheet" type="text/css" href="style2.css" /> </head> <body style="position: absolute;" id="editeur"> - <script type="text/x-jqote-template" id="vue-monde"> - <![CDATA[ - <div class="monde"> - <div class="scratch"></div> - </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-barre-outils"> - <![CDATA[ - <div class="barre-outils fenetre"> - <!--<div class="log barre-titre">--> - <h2 class="barre-outils barre-titre titre">Barre d'outils</h2> - <!--</div>--> - <input type="button" value="Nouveau bloc" class="barre-outils nouveau-bloc"/> - <input type="button" value="Recherche" class="barre-outils recherche"/> - <input type="button" value="Log" class="barre-outils log"/> - </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-log"> - <![CDATA[ - <div class="log fenetre"> - <div class="log barre-titre"> - <input type="button" class="log pause" value="▌▌" style="padding-right: 0.2em;" /> - <input type="button" class="log play" value="▶"/> - <h2 class="titre">Log</h2> - <div class="clearfloat"></div> - </div> - <div class="log messages"> - <div><!-- Il faut au moins un message (vide). --></div> - </div> + <div id="éditeur"> + </div> + <div id="vues" style="display: none;"> + <div class="vInstanceBloc instance-bloc main"> + <div class="vBloc instance-bloc contenu"></div> + </div> + <div class="vBloc main"> + <div class="vTitreBloc"></div> + <div class="vListePortsEntrée"></div> + <div class="vListePortsSortie"></div> + <div class="vTitresTabsDéfinitions"></div> + <div class="vContenusTabsDéfinitions"></div> + </div> + <div class="vTitreBloc"> + <h2 class="vTitre"></h2> + <form action="#" class="vÉdition"> + <input type="text" class="vTexte" value=""/> + <input type="submit" class="vSubmit" value="Ok"/> + <input type="button" class="vCancel" value="Anuler"/> + </form> + </div> + <div class="vListePorts"> + <div class="vPorts"></div> + <input type="button" class="vNouveauPort" value="+"/> + </div> + <div class="vPort port"> + </div> + <div class="vTitresTabsDéfinitions"> + <div class="vTitresTabs"> + <h3 class="vTitreAucuneDéfinition">Aucune définition</h3> </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-recherche"> - <![CDATA[ - <div class="recherche fenetre"> - <div class="recherche barre-titre"> - <input type="text" class="recherche termes" value="Recherche…"/> - <h2 class="titre">Recherche</h2> - <div class="clearfloat"></div> + <input type="button" class="vNouvelleDéfinition" value="+"/> + </div> + <div class="vContenusTabsDéfinitions"> + <div class="vContenusTabs"> + <div class="vContenuAucuneDéfinition"> + <h4>Aucune définition.</h4> + <p>Cliquez sur le + ci-dessus pour en créer une.</p> </div> - <div class="recherche résultats"> - </div> - </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-résultat-recherche"> - <![CDATA[ - <div class="résultat-recherche vMain"> - <span class="résultat-recherche vUid"> - </span> - <span class="résultat-recherche vTexte"> - </span> - </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-instance-bloc"> - <![CDATA[ - <div class="instance-bloc vMain fenetre"> - <div class="instance-bloc vBarre-titre"> - <h2 class="instance-bloc vTitre vVue-titre">Nom du bloc</h2> - <form action="#" class="instance-bloc vÉdition-titre"> - <input type="text" class="instance-bloc vChamp-titre" value=""/> - <input type="submit" class="instance-bloc vBouton-valider-titre" value="ok"/> - </form> - <div class="clearfloat"></div> - </div> - <div class="instance-bloc vDéfinitions"> - </div> - </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-définitions"> - <![CDATA[ - <div class="définitions vMain"> - <div class="définitions vTitresTabs"> - <h3 class="définition vTitre vAucune-définition">Aucune définition</h3> - <input type="button" class="définitions vNouvelle-définition" value="+"/> - <div class="clearfloat"></div> - </div> - <div class="définitions vContenus"> - <table class="définitions vPorts-entrée"></table> - <table class="définitions vPorts-sortie"></table> - <div class="définitions vContenusTabs"> - <div class="définition vCorps vAucune-définition"> - Aucune définition. - <br/> - Cliquez sur le + ci-dessus pour en créer une. - </div> - </div> - </div> - </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-ports-entrée"> - <![CDATA[ - <div class="ports vVerticalBar vEntrée"> - <table class="ports vPorts vEntrée"> - </table> - </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-ports-sortie"> - <![CDATA[ - <div class="ports vVerticalBar vSortie"> - <table class="ports vPorts vSortie"> - </table> - </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-port"> - <![CDATA[ - <span class="port vBox vMain"> - </span> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-port-drag"> - <![CDATA[ - <span class="port vBox vMain drag"> - </span> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-port-in-ports"> - <![CDATA[ - <tr> - <td class="port port-target"> - </td> - </tr> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-port-placeholder"> - <![CDATA[ - <tr class="port placeholder vTr vMain"> - <td class="port placeholder vTd"> - <span class="port placeholder vBox"> - </span> - </td> - </tr> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-définition-titre"> - <![CDATA[ - <h3 class="définition vTitre">Nom de la définition</h3> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-définition"> - <![CDATA[ - <div class="définition vCorps"> </div> - ]]> - </script> - <script type="text/x-jqote-template" id="vue-zone"> - <![CDATA[ - <div class="vZone"> + </div> + <div class="vTitreDéfinition"> + <h3 class="vTitre"></h3> + <form action="#" class="vÉdition"> + <input type="text" class="vTexte" value=""/> + <input type="submit" class="vSubmit" value="Ok"/> + <input type="button" class="vCancel" value="Anuler"/> + </form> + </div> + <div class="vDéfinition"> + <div class="vContenu"> + 42. </div> - ]]> - </script> - <script type="x-exemple-local-storage"> - if (!localStorage[window.location.href]) { - localStorage[window.location.href] = 0; - } - localStorage[window.location.href] = parseInt(localStorage[window.location.href]) + 1; - document.getElementById('count').textContent = localStorage[window.location.href]; - </script> + </div> + <div class="vConnexion"> + <div class="vSegment1 lien horizontal"></div> + <div class="vSegment2 lien vertical"></div> + <div class="vSegment3 lien horizontal"></div> + </div> + </div> </body> </html> diff --git a/jside4/mvc/bloc.js b/jside4/mvc/bloc.js @@ -0,0 +1,76 @@ +function MBloc() { + makeUid(this); + makeField(this, 'mTitreBloc', new MTitreBloc()); + makeField(this, 'mListePortsEntrée', new MListePorts(true)); + makeField(this, 'mListePortsSortie', new MListePorts(false)); + makeField(this, 'mListeDéfinitions', new MListeDéfinitions()); +} + +function VBloc(mBloc, emplacement, mInstanceBloc_portClick) { + makeView(this, 'vBloc', emplacement, 'vTitreBloc', 'vListePortsEntrée', 'vListePortsSortie', 'vTitresTabsDéfinitions', 'vContenusTabsDéfinitions'); + new VTitreBloc(mBloc.mTitreBloc(), this.parties.vTitreBloc); + var vpe = new VListePorts(mBloc.mListePortsEntrée(), this.parties.vListePortsEntrée); + var vps = new VListePorts(mBloc.mListePortsSortie(), this.parties.vListePortsSortie); + + this.mvTabsDéfinitions = new MVTabsDéfinitions(mBloc.mListeDéfinitions()); + + new VTitresTabsDéfinitions(this.mvTabsDéfinitions, this.parties.vTitresTabsDéfinitions); + new VContenusTabsDéfinitions(this.mvTabsDéfinitions, this.parties.vContenusTabsDéfinitions); + + var that = this; + var clicsPorts = function(mPort) { + singleton.portClickA.mInstanceBloc = mInstanceBloc_portClick; + singleton.portClickA.mDéfinition = that.mvTabsDéfinitions.définitionActive(); + + if (singleton.portClickB === null) { + singleton.portClickB = singleton.portClickA; + singleton.portClickA = {}; + } else { + var a = singleton.portClickA; + var b = singleton.portClickB; + if (a.mPort == b.mPort) { + // Double clic, afficher la valeur du port + } else { + //console.log(singleton.portClickA, singleton.portClickB); + if (a.mDéfinition.uid == b.mInstanceBloc.dansDéfinition.uid) { // a parent de b + if (a.mListePorts.estEntrée) { + a.mDéfinition.addConnexions( + new MConnexion(true, a.mInstanceBloc, a.mPort, false, b.mInstanceBloc, b.mPort) + ); + } else { + a.mDéfinition.addConnexions( + new MConnexion(false, b.mInstanceBloc, b.mPort, true, a.mInstanceBloc, a.mPort) + ); + } + } else if (b.mDéfinition.uid == a.mInstanceBloc.dansDéfinition.uid) { // b parent de a + if (a.mListePorts.estEntrée) { + a.mDéfinition.addConnexions( + new MConnexion(true, a.mInstanceBloc, a.mPort, false, b.mInstanceBloc, b.mPort) + ); + } else { + a.mDéfinition.addConnexions( + new MConnexion(false, b.mInstanceBloc, b.mPort, true, a.mInstanceBloc, a.mPort) + ); + } + } + + if (a.mInstanceBloc.dansDéfinition.uid == b.mInstanceBloc.dansDéfinition.uid) { // a et b même parent + if (a.mListePorts.estEntrée) { + a.mInstanceBloc.dansDéfinition.addConnexions( + new MConnexion(false, b.mInstanceBloc, b.mPort, false, a.mInstanceBloc, a.mPort) + ); + } else { + a.mInstanceBloc.dansDéfinition.addConnexions( + new MConnexion(false, a.mInstanceBloc, a.mPort, false, b.mInstanceBloc, b.mPort) + ); + } + } + } + singleton.portClickB = null; + singleton.portClickA = {}; + } + } + + vpe.onClickPort(clicsPorts); + vps.onClickPort(clicsPorts); +} +\ No newline at end of file diff --git a/jside4/mvc/bloc.js~ b/jside4/mvc/bloc.js~ @@ -0,0 +1,19 @@ +function MBloc() { + makeUid(this); + makeField(this, 'mTitreBloc', new MTitreBloc()); + makeField(this, 'mListePortsEntrée', new MListePorts(true)); + makeField(this, 'mListePortsSortie', new MListePorts(false)); + makeField(this, 'mListeDéfinitions', new MListeDéfinitions()); +} + +function VBloc(mBloc, emplacement) { + makeView(this, 'vBloc', emplacement, 'vTitreBloc', 'vListePortsEntrée', 'vListePortsSortie', 'vTitresTabsDéfinitions', 'vContenusTabsDéfinitions'); + new VTitreBloc(mBloc.mTitreBloc(), this.parties.vTitreBloc); + new VListePorts(mBloc.mListePortsEntrée(), this.parties.vListePortsEntrée); + new VListePorts(mBloc.mListePortsSortie(), this.parties.vListePortsSortie); + + this.mvTabsDéfinitions = new MVTabsDéfinitions(mBloc.mListeDéfinitions()); + + new VTitresTabsDéfinitions(this.mvTabsDéfinitions, this.parties.vTitresTabsDéfinitions); + new VContenusTabsDéfinitions(this.mvTabsDéfinitions, this.parties.vContenusTabsDéfinitions); +} +\ No newline at end of file diff --git a/jside4/mvc/connexion.js b/jside4/mvc/connexion.js @@ -0,0 +1,15 @@ +function MConnexion(deBloc, deMInstanceBloc, deMPort, versBloc, versMInstanceBloc, versMPort) { + makeUid(this); + makeField(this, 'deBloc', deBloc); + makeField(this, 'deMInstanceBloc', deMInstanceBloc); + makeField(this, 'deMPort', deMPort); + this.getDeMBloc = function() { + this.deBloc ? this.deMInstanceBloc : this.deMInstanceBloc.mBloc(); + } + makeField(this, 'versBloc', versBloc); + makeField(this, 'versMInstanceBloc', versMInstanceBloc); + makeField(this, 'versMPort', versMPort); + this.getVersMBloc = function() { + this.versBloc ? this.versMInstanceBloc : this.versMInstanceBloc.mBloc(); + } +} diff --git a/jside4/mvc/connexion.js~ b/jside4/mvc/connexion.js~ @@ -0,0 +1,15 @@ +function MConnexion(deBloc, deMInstanceBloc, deMPort, versBloc, versMInstanceBloc, versMPort) { + makeUid(this); + makeField(this, 'deBloc', deBloc); + makeField(this, 'deMInstanceBloc', deMInstanceBloc); + makeField(this, 'deMPort', deMPort); + this.getDeMBloc = function() { + this.deBloc ? this.deMInstanceBloc : this.deMInstanceBloc.mBloc(); + } + makeField(this, 'versBloc', versBloc); + makeField(this, 'versMInstanceBloc', versMInstanceBloc); + makeField(this, 'versMPort', versMPort); + this.getVersMBloc = function() { + this.versBloc ? this.versMInstanceBloc : this.versMInstanceBloc.mBloc(); + } +} +\ No newline at end of file diff --git a/jside4/mvc/définition.js b/jside4/mvc/définition.js @@ -0,0 +1,53 @@ +function MDéfinition() { + makeUid(this); + makeField(this, 'mTitreDéfinition', new MTitreDéfinition()); + makeCollection(this, 'instancesBlocs'); + makeCollection(this, 'connexions'); +} + +function VDéfinition(mDéfinition, emplacement) { + makeView(this, 'vDéfinition', emplacement, 'vContenu'); + + var vInstancesBlocsFilles = []; + var that = this; + + // Actions + this.visible = function(val) { + if (val) that.vue.show(); + else that.vue.hide(); + }; + + this.ajoutInstanceBloc = function(_mDéfinition, mInstanceBloc) { + mInstanceBloc.dansDéfinition = mDéfinition; // TODO hack + var vib = new VInstanceBloc(mInstanceBloc, that.parties.vContenu); + vInstancesBlocsFilles.push(vib); + }; + + this.ajoutConnexion = function(_mDéfinition, mConnexion) { + console.log(mConnexion); + if (!mConnexion.deBloc()) { + for (i = 0; i < vInstancesBlocsFilles.length; i++) { + console.log(vInstancesBlocsFilles[i]); + } + } + /*var mvic = new MVInstanceConnexion(null, vib.vue, vib2.vue); */ + /*new VInstanceConnexion(mvic, $('#éditeur')); */ + } + + this.vueNormale = function() { + } + + // Binding + mDéfinition.onAddInstancesBlocs(this.ajoutInstanceBloc); + for (var i = 0; i < mDéfinition.instancesBlocs.length; i++) { + this.ajoutInstanceBloc(mDéfinition, mDéfinition.instancesBlocs[i]); + } + + mDéfinition.onAddConnexions(this.ajoutConnexion); + for (var i = 0; i < mDéfinition.connexions.length; i++) { + this.ajoutConnexion(mDéfinition, mDéfinition.connexions[i]); + } + + // Défauts + this.vueNormale(); +} +\ No newline at end of file diff --git a/jside4/mvc/définition.js~ b/jside4/mvc/définition.js~ @@ -0,0 +1,34 @@ +function MDéfinition() { + makeUid(this); + makeField(this, 'mTitreDéfinition', new MTitreDéfinition()); + makeCollection(this, 'instancesBlocs'); + makeCollection(this, 'connexions'); +} + +function VDéfinition(mDéfinition, emplacement) { + makeView(this, 'vDéfinition', emplacement, 'vContenu'); + + var that = this; + + // Actions + this.visible = function(val) { + if (val) that.vue.show(); + else that.vue.hide(); + }; + + this.ajoutInstanceBloc = function(mDéfinition, mInstanceBloc) { + new VInstanceBloc(mInstanceBloc, that.parties.vContenu); + }; + + this.vueNormale = function() { + } + + // Binding + mDéfinition.onAddInstancesBlocs(this.ajoutInstanceBloc); + for (var i = 0; i < mDéfinition.instancesBlocs.length; i++) { + this.ajoutInstanceBloc(mDéfinition, mDéfinition.instancesBlocs[i]); + } + + // Défauts + this.vueNormale(); +} +\ No newline at end of file diff --git a/jside4/mvc/instance-bloc.js b/jside4/mvc/instance-bloc.js @@ -0,0 +1,12 @@ +function MInstanceBloc(mBloc) { + makeUid(this); + makeField(this, 'mBloc', mBloc); + makeField(this, 'dansDéfinition', null); +} + +function VInstanceBloc(mInstanceBloc, emplacement) { + makeView(this, 'vInstanceBloc', emplacement, 'vBloc'); + this.vBloc = new VBloc(mInstanceBloc.mBloc(), this.parties.vBloc, mInstanceBloc); + + this.vue.draggable().resizable(); +} +\ No newline at end of file diff --git a/jside4/mvc/instance-bloc.js~ b/jside4/mvc/instance-bloc.js~ @@ -0,0 +1,11 @@ +function MInstanceBloc(mBloc) { + makeUid(this); + makeField(this, 'mBloc', mBloc); +} + +function VInstanceBloc(mInstanceBloc, emplacement) { + makeView(this, 'vInstanceBloc', emplacement, 'vBloc'); + new VBloc(mInstanceBloc.mBloc(), this.parties.vBloc, mInstanceBloc); + + this.vue.draggable().resizable(); +} +\ No newline at end of file diff --git a/jside4/mvc/instance-connexion.js b/jside4/mvc/instance-connexion.js @@ -0,0 +1,53 @@ +function MVInstanceConnexion(mConnexion, vPortA, vPortB) { + makeUid(this); + makeField(this, 'mConnexion', mConnexion); + makeField(this, 'vPortA', vPortA); + makeField(this, 'vPortB', vPortB); +} + +function VInstanceConnexion(mvInstanceConnexion, emplacement) { + makeView(this, 'vConnexion', emplacement, 'vSegment1', 'vSegment2', 'vSegment3'); + + var that = this; + + // Actions + this.vueNormale = function() { + var _de = mvInstanceConnexion.vPortA(); + var _vers = mvInstanceConnexion.vPortB(); + var de, vers; + if ($(_de).centerX() < $(_vers).centerX()) { + de = $(_de); + vers = $(_vers); + } else { + de = $(_vers); + vers = $(_de); + } + + var segment1 = that.parties.vSegment1; + var segment2 = that.parties.vSegment2; + var segment3 = that.parties.vSegment3; + + $(segment1) + .width((vers.centerX() - de.centerX()) / 2) + .position({my: 'left center', at: 'center', of: de}); + $(segment3) + .width((vers.centerX() - de.centerX()) / 2) + .position({my: 'right center', at: 'center', of: vers}); + + var neg = segment3.centerY() - segment1.centerY(); + + $(segment2) + .height((neg > 0) ? segment3.bottomY() - segment1.topY() : segment1.bottomY() - segment3.topY()) + .position({ + my: (neg > 0) ? 'center top' : 'center bottom', + at: (neg > 0) ? 'right top' : 'right bottom', + of: (neg > 0) ? segment1 : segment1 + }); + } + + // Binding + // onMove (dePort, versPort) + + // Défauts + this.vueNormale(); +} diff --git a/jside4/mvc/instance-connexion.js~ b/jside4/mvc/instance-connexion.js~ @@ -0,0 +1,16 @@ +function VInstanceConnexion(mConnexion, emplacement) { + makeView(this, 'vConnexion', emplacement, 'vSegment1', 'vSegment2', 'vSegment3'); + + var that = this; + + // Actions + this.vueNormale = function() { + + } + + // Binding + // onMove (dePort, versPort) + + // Défauts + this.vueNormale(); +} diff --git a/jside4/mvc/liste-définitions.js b/jside4/mvc/liste-définitions.js @@ -0,0 +1,5 @@ +function MListeDéfinitions() { + makeUid(this); + makeCollection(this, 'définitions'); + makeCollection(this, 'tabsDéfinitions'); +} +\ No newline at end of file diff --git a/jside4/mvc/liste-ports.js b/jside4/mvc/liste-ports.js @@ -0,0 +1,45 @@ +function MListePorts(estEntrée) { + makeUid(this); + this.estEntrée = estEntrée; + makeCollection(this, 'ports'); +} + +function VListePorts(mListePorts, emplacement) { + makeView(this, 'vListePorts', emplacement, 'vPorts', 'vNouveauPort'); + + this.cbClickPort = []; + var that = this; + + // Actions + this.actionNouveauPort = function() { + mListePorts.addPorts(new MPort()); + }; + + this.clickPort = function(mPort) { + singleton.portClickA.mListePorts = mListePorts; + faireCallbacks(that.cbClickPort, mPort); + }; + + this.ajoutPort = function(mListePorts, mPort) { + var vp = new VPort(mPort, that.parties.vPorts); + vp.onClick(that.clickPort); + }; + + this.vueNormale = function() { + } + + // Binding + mListePorts.onAddPorts(this.ajoutPort); + for (var i = 0; i < mListePorts.ports.length; i++) { + this.ajoutPort(mListePorts, mListePorts.ports[i]); + } + + this.parties.vNouveauPort.click(this.actionNouveauPort); + + this.onClickPort = function(callback) { + that.cbClickPort.push(callback); + }; + + // Défauts + this.vueNormale(); +} +\ No newline at end of file diff --git a/jside4/mvc/liste-ports.js~ b/jside4/mvc/liste-ports.js~ @@ -0,0 +1,34 @@ +function MListePorts(estEntrée) { + makeUid(this); + this.estEntrée = estEntrée; + makeCollection(this, 'ports'); +} + +function VListePorts(mListePorts, emplacement) { + makeView(this, 'vListePorts', emplacement, 'vPorts', 'vNouveauPort'); + + var that = this; + + // Actions + this.actionNouveauPort = function() { + mListePorts.addPorts(new MPort()); + }; + + this.ajoutPort = function(mListePorts, mPort) { + new VPort(mPort, that.parties.vPorts); + }; + + this.vueNormale = function() { + } + + // Binding + mListePorts.onAddPorts(this.ajoutPort); + for (var i = 0; i < mListePorts.ports.length; i++) { + this.ajoutPort(mListePorts, mListePorts.ports[i]); + } + + this.parties.vNouveauPort.click(this.actionNouveauPort); + + // Défauts + this.vueNormale(); +} +\ No newline at end of file diff --git a/jside4/mvc/monde.js b/jside4/mvc/monde.js @@ -0,0 +1,7 @@ +function MMonde() { + makeUid(this); + makeCollection(this, 'mBlocs'); + makeCollection(this, 'mLog'); // TODO + makeCollection(this, 'mLogs'); // TODO + makeCollection(this, 'mRecherches'); // TODO +} +\ No newline at end of file diff --git a/jside4/mvc/port.js b/jside4/mvc/port.js @@ -0,0 +1,22 @@ +function MPort(mListePorts) { + makeUid(this); + //makeField(this, 'connexionEntrante', null); // Oui mais… quand on a plusieurs définitions + //makeCollection(this, 'connexionsSortantes'); +} + +function VPort(mPort, emplacement) { + makeView(this, 'vPort', emplacement); + + var that = this; + + this.cbClick = []; + + this.vue.click(function() { + singleton.portClickA.mPort = mPort; + faireCallbacks(that.cbClick, mPort); + }); + + this.onClick = function(callback) { + that.cbClick.push(callback); + }; +} +\ No newline at end of file diff --git a/jside4/mvc/port.js~ b/jside4/mvc/port.js~ @@ -0,0 +1,9 @@ +function MPort() { + makeUid(this); +} + +function VPort(mPort, emplacement) { + makeView(this, 'vPort', emplacement); + + var that = this; +} +\ No newline at end of file diff --git a/jside4/mvc/tabs-définitions.js b/jside4/mvc/tabs-définitions.js @@ -0,0 +1,91 @@ +function MVTabsDéfinitions(mListeDéfinitions) { // Modèle ou vue ??? + makeUid(this); + this.mListeDéfinitions = mListeDéfinitions; + makeField(this, 'définitionActive', 0); +} + +debugctr = 0; +function VTitresTabsDéfinitions(mvTabsDéfinitions, emplacement) { + makeView(this, 'vTitresTabsDéfinitions', emplacement, 'vTitresTabs', 'vTitreAucuneDéfinition', 'vNouvelleDéfinition'); + + var listeVues = {}; + var that = this; + + // Actions + this.actionNouvelleDéfinition = function() { + mvTabsDéfinitions.mListeDéfinitions.addDéfinitions(new MDéfinition()); + }; + + this.ajoutDéfinition = function(mListeDéfinitions, mDéfinition) { + var vtd = new VTitreDéfinition(mDéfinition.mTitreDéfinition(), that.parties.vTitresTabs); + mvTabsDéfinitions.définitionActive(mDéfinition); + vtd.vue.click(function(){ // TODO : pas propre, devrait être vtd.onClick(). + mvTabsDéfinitions.définitionActive(mDéfinition); + }) + listeVues[mDéfinition.uid] = vtd; + that.vueNormale(); + }; + + this.switchDéfinition = function(_mvTabsDéfinitions, _définitionActive) { + for (var i in listeVues) + listeVues[i].active(i == mvTabsDéfinitions.définitionActive().uid); + }; + + this.vueNormale = function() { + if (mvTabsDéfinitions.mListeDéfinitions.définitions.length == 0) { + that.parties.vTitreAucuneDéfinition.show(); + } else { + that.parties.vTitreAucuneDéfinition.hide(); + } + that.switchDéfinition(); + }; + + // Binding + mvTabsDéfinitions.mListeDéfinitions.onAddDéfinitions(this.ajoutDéfinition); + var mld = mvTabsDéfinitions.mListeDéfinitions; + for (var i = 0; i < mld.définitions.length; i++) { + this.ajoutDéfinition(mld, mld.définitions[i]); + } + + mvTabsDéfinitions.onChangeDéfinitionActive(this.switchDéfinition); + + this.parties.vNouvelleDéfinition.click(this.actionNouvelleDéfinition); + + // Défauts + this.vueNormale(); +} + +function VContenusTabsDéfinitions(mvTabsDéfinitions, emplacement) { + makeView(this, 'vContenusTabsDéfinitions', emplacement, 'vContenusTabs', 'vContenuAucuneDéfinition'); + + var listeVues = {}; + var that = this; + + // Actions + this.ajoutDéfinition = function(mListeDéfinitions, mDéfinition) { + var vd = new VDéfinition(mDéfinition, that.parties.vContenusTabs); + listeVues[mDéfinition.uid] = vd; + that.vueNormale(); + }; + + this.switchDéfinition = function(_mvTabsDéfinitions, _définitionActive) { + for (var i in listeVues) + listeVues[i].visible(i == mvTabsDéfinitions.définitionActive().uid); + }; + + this.vueNormale = function() { + if (mvTabsDéfinitions.mListeDéfinitions.définitions.length == 0) { + that.parties.vContenuAucuneDéfinition.show(); + } else { + that.parties.vContenuAucuneDéfinition.hide(); + } + that.switchDéfinition(); + }; + + // Binding + mvTabsDéfinitions.mListeDéfinitions.onAddDéfinitions(this.ajoutDéfinition); + mvTabsDéfinitions.onChangeDéfinitionActive(this.switchDéfinition); + + // Défauts + this.vueNormale(); +} +\ No newline at end of file diff --git a/jside4/mvc/tabs-définitions.js~ b/jside4/mvc/tabs-définitions.js~ @@ -0,0 +1,91 @@ +function MVTabsDéfinitions(mListeDéfinitions) { // Modèle ou vue ??? + makeUid(this); + this.mListeDéfinitions = mListeDéfinitions; + makeField(this, 'définitionActive', 0); +} + +debugctr = 0; +function VTitresTabsDéfinitions(mvTabsDéfinitions, emplacement) { + makeView(this, 'vTitresTabsDéfinitions', emplacement, 'vTitresTabs', 'vTitreAucuneDéfinition', 'vNouvelleDéfinition'); + + var listeVues = {}; + var that = this; + + // Actions + this.actionNouvelleDéfinition = function() { + mvTabsDéfinitions.mListeDéfinitions.addDéfinitions(new MDéfinition()); + }; + + this.ajoutDéfinition = function(mListeDéfinitions, mDéfinition) { + var vtd = new VTitreDéfinition(mDéfinition.mTitreDéfinition(), that.parties.vTitresTabs); + mvTabsDéfinitions.définitionActive(mDéfinition.uid); + vtd.vue.click(function(){ // TODO : pas propre, devrait être vtd.onClick(). + mvTabsDéfinitions.définitionActive(mDéfinition.uid); + }) + listeVues[mDéfinition.uid] = vtd; + that.vueNormale(); + }; + + this.switchDéfinition = function(_mvTabsDéfinitions, _définitionActive) { + for (var i in listeVues) + listeVues[i].active(i == mvTabsDéfinitions.définitionActive()); + }; + + this.vueNormale = function() { + if (mvTabsDéfinitions.mListeDéfinitions.définitions.length == 0) { + that.parties.vTitreAucuneDéfinition.show(); + } else { + that.parties.vTitreAucuneDéfinition.hide(); + } + that.switchDéfinition(); + }; + + // Binding + mvTabsDéfinitions.mListeDéfinitions.onAddDéfinitions(this.ajoutDéfinition); + var mld = mvTabsDéfinitions.mListeDéfinitions; + for (var i = 0; i < mld.définitions.length; i++) { + this.ajoutDéfinition(mld, mld.définitions[i]); + } + + mvTabsDéfinitions.onChangeDéfinitionActive(this.switchDéfinition); + + this.parties.vNouvelleDéfinition.click(this.actionNouvelleDéfinition); + + // Défauts + this.vueNormale(); +} + +function VContenusTabsDéfinitions(mvTabsDéfinitions, emplacement) { + makeView(this, 'vContenusTabsDéfinitions', emplacement, 'vContenusTabs', 'vContenuAucuneDéfinition'); + + var listeVues = {}; + var that = this; + + // Actions + this.ajoutDéfinition = function(mListeDéfinitions, mDéfinition) { + var vd = new VDéfinition(mDéfinition, that.parties.vContenusTabs); + listeVues[mDéfinition.uid] = vd; + that.vueNormale(); + }; + + this.switchDéfinition = function(_mvTabsDéfinitions, _définitionActive) { + for (var i in listeVues) + listeVues[i].visible(i == mvTabsDéfinitions.définitionActive()); + }; + + this.vueNormale = function() { + if (mvTabsDéfinitions.mListeDéfinitions.définitions.length == 0) { + that.parties.vContenuAucuneDéfinition.show(); + } else { + that.parties.vContenuAucuneDéfinition.hide(); + } + that.switchDéfinition(); + }; + + // Binding + mvTabsDéfinitions.mListeDéfinitions.onAddDéfinitions(this.ajoutDéfinition); + mvTabsDéfinitions.onChangeDéfinitionActive(this.switchDéfinition); + + // Défauts + this.vueNormale(); +} +\ No newline at end of file diff --git a/jside4/mvc/titre-bloc.js b/jside4/mvc/titre-bloc.js @@ -0,0 +1,52 @@ +function MTitreBloc() { + makeUid(this); + makeField(this, 'titre', 'Nom du Bloc'); +} + +function VTitreBloc(mTitreBloc, emplacement) { + makeView(this, 'vTitreBloc', emplacement, 'vTitre', 'vÉdition', 'vTexte', 'vSubmit', 'vCancel'); + + var that = this; + + // Actions + this.updateTitreBloc = function(mTitreBloc, titre) { + that.parties.vTitre.text(titre); + that.parties.vTexte.val(titre); + }; + + this.editerTitreBloc = function() { + that.parties.vTitre.hide(); + that.parties.vÉdition.show(); + }; + + this.accepteÉditionTitreBloc = function() { + mTitreBloc.titre(that.parties.vTexte.val()); + that.vueNormale(); + }; + + this.anuleÉditionTitreBloc = function() { + that.parties.vTexte.val(mTitreBloc.titre()); + that.vueNormale(); + }; + + this.vueNormale = function() { + that.parties.vTitre.show(); + that.parties.vÉdition.hide(); + }; + + // Binding + mTitreBloc.onChangeTitre(this.updateTitreBloc); + this.updateTitreBloc(mTitreBloc, mTitreBloc.titre()); + + that.parties.vTitre.dblclick(this.editerTitreBloc); + + that.parties.vCancel.click(this.anuleÉditionTitreBloc); + + that.parties.vÉdition.submit(function(e) { + that.accepteÉditionTitreBloc(); + return false; + }); + + // Défauts + this.vueNormale(); +} +\ No newline at end of file diff --git a/jside4/mvc/titre-définition.js b/jside4/mvc/titre-définition.js @@ -0,0 +1,57 @@ +function MTitreDéfinition() { + makeUid(this); + makeField(this, 'titre', 'Nom de la définition'); +} + +function VTitreDéfinition(mTitreDéfinition, emplacement) { + makeView(this, 'vTitreDéfinition', emplacement, 'vTitre', 'vÉdition', 'vTexte', 'vSubmit', 'vCancel'); + + var that = this; + + // Actions + this.updateTitreDéfinition = function(mTitreDéfinition, titre) { + that.parties.vTitre.text(titre); + that.parties.vTexte.val(titre); + }; + + this.editerTitreDéfinition = function() { + that.parties.vTitre.hide(); + that.parties.vÉdition.show(); + }; + + this.accepteÉditionTitreDéfinition = function() { + mTitreDéfinition.titre(that.parties.vTexte.val()); + that.vueNormale(); + }; + + this.anuleÉditionTitreDéfinition = function() { + that.parties.vTexte.val(mTitreDéfinition.titre()); + that.vueNormale(); + }; + + this.vueNormale = function() { + that.parties.vTitre.show(); + that.parties.vÉdition.hide(); + }; + + this.active = function(val) { + if (val) that.vue.addClass('active'); + else that.vue.removeClass('active'); + }; + + // Binding + mTitreDéfinition.onChangeTitre(this.updateTitreDéfinition); + this.updateTitreDéfinition(mTitreDéfinition, mTitreDéfinition.titre()); + + that.parties.vTitre.dblclick(this.editerTitreDéfinition); + + that.parties.vCancel.click(this.anuleÉditionTitreDéfinition); + + that.parties.vÉdition.submit(function(e) { + that.accepteÉditionTitreDéfinition(); + return false; + }); + + // Défauts + this.vueNormale(); +} +\ No newline at end of file diff --git a/jside4/mvc/titre-définition.js~ b/jside4/mvc/titre-définition.js~ @@ -0,0 +1,52 @@ +function MTitreDéfinition() { + makeUid(this); + makeField(this, 'titre', 'Nom de la définition'); +} + +function VTitreDéfinition(mTitreDéfinition, emplacement) { + makeView(this, 'vTitreDéfinition', emplacement, 'vTitre', 'vÉdition', 'vTexte', 'vSubmit', 'vCancel'); + + var that = this; + + // Actions + this.updateTitreDéfinition = function(mTitreDéfinition, titre) { + that.parties.vTitre.text(titre); + that.parties.vTexte.val(titre); + }; + + this.editerTitreDéfinition = function() { + that.parties.vTitre.hide(); + that.parties.vÉdition.show(); + }; + + this.accepteÉditionTitreDéfinition = function() { + mTitreDéfinition.titre(that.parties.vTexte.val()); + that.vueNormale(); + }; + + this.anuleÉditionTitreDéfinition = function() { + that.parties.vTexte.val(mTitreDéfinition.titre()); + that.vueNormale(); + }; + + this.vueNormale = function() { + that.parties.vTitre.show(); + that.parties.vÉdition.hide(); + }; + + // Binding + mTitreDéfinition.onChangeTitre(this.updateTitreDéfinition); + this.updateTitreDéfinition(mTitreDéfinition, mTitreDéfinition.titre()); + + that.parties.vTitre.dblclick(this.editerTitreDéfinition); + + that.parties.vCancel.click(this.anuleÉditionTitreDéfinition); + + that.parties.vÉdition.submit(function(e) { + that.accepteÉditionTitreDéfinition(); + return false; + }); + + // Défauts + this.vueNormale(); +} +\ No newline at end of file diff --git a/jside4/singleton.js b/jside4/singleton.js @@ -0,0 +1,14 @@ +singleton = (function() { + var s = { uid: 0 }; + return { + uid: function () { + return s.uid++; + }, + portClickA: {}, + portClickB: null + }; +})(); + +function makeUid(obj) { + obj.uid = singleton.uid(); +} +\ No newline at end of file diff --git a/jside4/singleton.js~ b/jside4/singleton.js~ @@ -0,0 +1,12 @@ +singleton = (function() { + var s = { uid: 0 }; + return { + uid: function () { + return s.uid++; + } + }; +})(); + +function makeUid(obj) { + obj.uid = singleton.uid(); +} +\ No newline at end of file diff --git a/jside4/style2.css b/jside4/style2.css @@ -0,0 +1,39 @@ +.active { + color: gray; +} + +.instance-bloc.main { + position: absolute; + top: 30%; + left: 40%; + width: 30%; + height: 40%; + border: thin solid blue; +} + +.instance-bloc.contenu { + height: 100%; + width: 100%; +} + +.vBloc.main { + width:100%; + height:100%; +} + +.port { + display: inline-block; + background-color: lightblue; + border: thin solid blue; + width: 10px; + height: 10px; +} + +.lien { + background-color: lightblue; + position: absolute; + top: -10px; + left: -10px; + width: 5px; + height: 5px; +} +\ No newline at end of file diff --git a/jside4/style2.css~ b/jside4/style2.css~ @@ -0,0 +1,37 @@ +.active { + color: gray; +} + +.instance-bloc.main { + position: absolute; + top: 30%; + left: 40%; + width: 30%; + height: 40%; + border: thin solid blue; +} + +.instance-bloc.contenu { + height: 100%; + width: 100%; +} + +.vBloc.main { + width:100%; + height:100%; +} + +.port { + display: inline-block; + background-color: lightblue; + border: thin solid blue; + width: 10px; + height: 10px; +} + +.lien { + background-color: lightblue; + position: absolute; + width: 10px; + height: 10px; +} +\ No newline at end of file diff --git a/jside4/test.js b/jside4/test.js @@ -1,10 +1,19 @@ -function testlog(m, count) { - m.log.envoiMessage('Coucou !'); - var fdemo = function() { - m.log.envoiMessage('Pioute !'); - if (--count > 0) - window.setTimeout(fdemo, 100); - } - window.setTimeout(fdemo, 1000); -} +$(function() { + var mFibo = new MBloc(); + var iFibo = new MInstanceBloc(mFibo); + var vFibo = new VInstanceBloc(iFibo, $('#éditeur')); + var mDéfinitionFibo = new MDéfinition(); + mFibo.mListeDéfinitions().addDéfinitions(mDéfinitionFibo); + + var mMoinsUn = new MBloc(); + mDéfinitionFibo.addInstancesBlocs(new MInstanceBloc(mMoinsUn)); + + var mUn = new MBloc(); + mDéfinitionFibo.addInstancesBlocs(new MInstanceBloc(mUn)); + + window.setTimeout(function() { + /*var mvic = new MVInstanceConnexion(null, vib.vue, vib2.vue); */ + /*new VInstanceConnexion(mvic, $('#éditeur')); */ + }, 2000); +}); +\ No newline at end of file diff --git a/jside4/vues.js b/jside4/vues.js @@ -0,0 +1,20 @@ +function makeView(obj, type, emplacement) { + obj.vue = $('#vues > .' + type).clone().appendTo(emplacement); + + //Debug + if (obj.vue.size() == 0) { + console.log("Warning! Couldn't append template #vues > ." + type + " to", emplacement); + } + + var parties = $.makeArray(arguments); + obj.parties = {}; + for (var i = 3; i < parties.length; i++) { + obj.parties[parties[i]] = obj.vue.find('.' + parties[i]); + + // Debug + if (obj.parties[parties[i]].size() == 0) { + console.log("Warning! Couldn't find part", i, parties[i], "for", type, obj, ". obj is in debugPart."); + debugPart = obj; + } + } +}