commit b6281723c4a699aeee0fd7b77fa534b7c8147d90
parent bb7c20d61677e5138fab9c251866aacc90e87831
Author: gduperon <gduperon@5d9ba3ac-444b-4713-9fb3-0b58e79229a2>
Date: Wed, 19 May 2010 08:43:50 +0000
On commence eval()
git-svn-id: https://projetud.info-ufr.univ-montp2.fr/svn/flin607-2009-gduperon@65 5d9ba3ac-444b-4713-9fb3-0b58e79229a2
Diffstat:
11 files changed, 104 insertions(+), 31 deletions(-)
diff --git a/jside4/bugs b/jside4/bugs
@@ -2,16 +2,18 @@
Renomer les onAddXyz() en xyz.onAdd()
+Plein de bugs depuis que j'ai mis ces *** connexions
+
TODO:
-Afficher les connexions
-- Chercher la vue du port d'entrée
-- Chercher la vue du port de sortie
-- Connecter
+ok Afficher les connexions
+ok - Chercher la vue du port d'entrée
+ok - Chercher la vue du port de sortie
+ok - Connecter
-Types de définitions
-- Afficher 2 boutons
-- ajouter un champ texte
-- toggle sur le champ texte
+ok Types de définitions
+ok - Afficher 2 boutons
+ok - ajouter un champ texte
+ok - toggle sur le champ texte
Eval
- chercher la connexion qui va sur le port
diff --git a/jside4/index.html b/jside4/index.html
@@ -54,7 +54,7 @@
<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">
+ <body style="position: absolute;">
<div id="éditeur">
</div>
<div id="vues" style="display: none;">
@@ -105,9 +105,15 @@
</form>
</div>
<div class="vDéfinition">
- <div class="vContenu">
- 42.
+ <input type="button" class="vTypeJs" value="JavaScript"/>
+ <input type="button" class="vTypeD" value="Dataflow"/>
+ <div class="vContenuJs">
+ <textarea class="vCodeJs">function() {
+ return [];
+}
+</textarea>
</div>
+ <div class="vContenu"></div>
</div>
<div class="vConnexion">
<div class="vSegment1 lien horizontal"></div>
diff --git a/jside4/mvc/bloc.js b/jside4/mvc/bloc.js
@@ -6,16 +6,18 @@ function MBloc() {
makeField(this, 'mListeDéfinitions', new MListeDéfinitions());
}
-function VBloc(mBloc, emplacement, mInstanceBloc_portClick) {
+function VBloc(mBloc, emplacement, mInstanceBloc_portClick, vInstanceBlocParente) {
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.vpe = vpe;
+ this.vps = vps;
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);
+ new VTitresTabsDéfinitions(this.mvTabsDéfinitions, this.parties.vTitresTabsDéfinitions, vInstanceBlocParente);
+ new VContenusTabsDéfinitions(this.mvTabsDéfinitions, this.parties.vContenusTabsDéfinitions, vInstanceBlocParente);
var that = this;
var clicsPorts = function(mPort) {
@@ -30,6 +32,7 @@ function VBloc(mBloc, emplacement, mInstanceBloc_portClick) {
var b = singleton.portClickB;
if (a.mPort == b.mPort) {
// Double clic, afficher la valeur du port
+ showEvalPort(a.mPort);
} else {
//console.log(singleton.portClickA, singleton.portClickB);
if (a.mDéfinition.uid == b.mInstanceBloc.dansDéfinition.uid) { // a parent de b
@@ -52,9 +55,7 @@ function VBloc(mBloc, emplacement, mInstanceBloc_portClick) {
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
+ } else 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)
@@ -73,4 +74,8 @@ function VBloc(mBloc, emplacement, mInstanceBloc_portClick) {
vpe.onClickPort(clicsPorts);
vps.onClickPort(clicsPorts);
+}
+
+function showEvalPort(mPort) {
+ console.log(mPort.mListePorts);
}
\ No newline at end of file
diff --git a/jside4/mvc/définition.js b/jside4/mvc/définition.js
@@ -5,8 +5,32 @@ function MDéfinition() {
makeCollection(this, 'connexions');
}
-function VDéfinition(mDéfinition, emplacement) {
- makeView(this, 'vDéfinition', emplacement, 'vContenu');
+function findVPort(vInstancesBlocsFilles, mPort) {
+ for (var i = 0; i < vInstancesBlocsFilles.length; i++) {
+ var jtab = [vInstancesBlocsFilles[i].vBloc.vpe, vInstancesBlocsFilles[i].vBloc.vps];
+ for (var j = 0; j < jtab.length; j++) {
+ var ktab = jtab[j].vPortsFilles;
+ for (var k = 0; k < ktab.length; ktab++) {
+ if (ktab[k].mPort == mPort) return ktab[k];
+ }
+ }
+ }
+}
+
+function findVPortBis(vInstancesBlocsFilles, mPort) {
+ for (var i = 0; i < vInstancesBlocsFilles.length; i++) {
+ var jtab = [vInstancesBlocsFilles[i].vBloc.vpe, vInstancesBlocsFilles[i].vBloc.vps];
+ for (var j = 0; j < jtab.length; j++) {
+ var ktab = jtab[j].vPortsFilles;
+ for (var k = 0; k < ktab.length; ktab++) {
+ if (ktab[k].mPort == mPort) return ktab[k];
+ }
+ }
+ }
+}
+
+function VDéfinition(mDéfinition, emplacement, vInstanceBlocParente) {
+ makeView(this, 'vDéfinition', emplacement, 'vTypeJs', 'vTypeD', 'vContenuJs', 'vCodeJs', 'vContenu');
var vInstancesBlocsFilles = [];
var that = this;
@@ -26,17 +50,44 @@ function VDéfinition(mDéfinition, emplacement) {
this.ajoutConnexion = function(_mDéfinition, mConnexion) {
console.log(mConnexion);
if (!mConnexion.deBloc()) {
- for (i = 0; i < vInstancesBlocsFilles.length; i++) {
- console.log(vInstancesBlocsFilles[i]);
- }
+ var deVPort = findVPort(vInstancesBlocsFilles, mConnexion.deMPort());
+ } else {
+ var deVPort = findVPort([vInstanceBlocParente], mConnexion.deMPort());
+ }
+ if (!mConnexion.versBloc()) {
+ var versVPort = findVPort(vInstancesBlocsFilles, mConnexion.versMPort());
+ } else {
+ var versVPort = findVPort([vInstanceBlocParente], mConnexion.versMPort());
}
- /*var mvic = new MVInstanceConnexion(null, vib.vue, vib2.vue); */
- /*new VInstanceConnexion(mvic, $('#éditeur')); */
+ var mvic = new MVInstanceConnexion(null, deVPort.vue, versVPort.vue);
+ new VInstanceConnexion(mvic, $('#éditeur'));
}
+ this.estTypeJs = false;
this.vueNormale = function() {
+ if (that.estTypeJs) {
+ that.parties.vTypeJs.hide();
+ that.parties.vContenu.hide();
+ that.parties.vTypeD.show();
+ that.parties.vContenuJs.show();
+ } else {
+ that.parties.vTypeJs.show();
+ that.parties.vContenu.show();
+ that.parties.vTypeD.hide();
+ that.parties.vContenuJs.hide();
+ }
}
+ this.typeJavaScript = function() {
+ that.estTypeJs = true;
+ that.vueNormale();
+ };
+
+ this.typeDataflow = function() {
+ that.estTypeJs = false;
+ that.vueNormale();
+ };
+
// Binding
mDéfinition.onAddInstancesBlocs(this.ajoutInstanceBloc);
for (var i = 0; i < mDéfinition.instancesBlocs.length; i++) {
@@ -48,6 +99,9 @@ function VDéfinition(mDéfinition, emplacement) {
this.ajoutConnexion(mDéfinition, mDéfinition.connexions[i]);
}
+ that.parties.vTypeJs.click(this.typeJavaScript);
+ that.parties.vTypeD.click(this.typeDataflow);
+
// Défauts
this.vueNormale();
}
\ No newline at end of file
diff --git a/jside4/mvc/instance-bloc.js b/jside4/mvc/instance-bloc.js
@@ -6,7 +6,7 @@ function MInstanceBloc(mBloc) {
function VInstanceBloc(mInstanceBloc, emplacement) {
makeView(this, 'vInstanceBloc', emplacement, 'vBloc');
- this.vBloc = new VBloc(mInstanceBloc.mBloc(), this.parties.vBloc, mInstanceBloc);
+ this.vBloc = new VBloc(mInstanceBloc.mBloc(), this.parties.vBloc, mInstanceBloc, this);
this.vue.draggable().resizable();
}
\ No newline at end of file
diff --git a/jside4/mvc/instance-connexion.js b/jside4/mvc/instance-connexion.js
@@ -46,7 +46,8 @@ function VInstanceConnexion(mvInstanceConnexion, emplacement) {
}
// Binding
- // onMove (dePort, versPort)
+ // onMove (dePort, versPort);
+ window.setInterval(this.vueNormale, 1000);
// Défauts
this.vueNormale();
diff --git a/jside4/mvc/liste-ports.js b/jside4/mvc/liste-ports.js
@@ -8,6 +8,7 @@ function VListePorts(mListePorts, emplacement) {
makeView(this, 'vListePorts', emplacement, 'vPorts', 'vNouveauPort');
this.cbClickPort = [];
+ this.vPortsFilles = [];
var that = this;
// Actions
@@ -22,6 +23,7 @@ function VListePorts(mListePorts, emplacement) {
this.ajoutPort = function(mListePorts, mPort) {
var vp = new VPort(mPort, that.parties.vPorts);
+ that.vPortsFilles.push(vp);
vp.onClick(that.clickPort);
};
diff --git a/jside4/mvc/port.js b/jside4/mvc/port.js
@@ -1,5 +1,6 @@
function MPort(mListePorts) {
makeUid(this);
+ makeField(this, 'mListePorts', mListePorts);
//makeField(this, 'connexionEntrante', null); // Oui mais… quand on a plusieurs définitions
//makeCollection(this, 'connexionsSortantes');
}
@@ -7,6 +8,7 @@ function MPort(mListePorts) {
function VPort(mPort, emplacement) {
makeView(this, 'vPort', emplacement);
+ this.mPort = mPort;
var that = this;
this.cbClick = [];
diff --git a/jside4/mvc/tabs-définitions.js b/jside4/mvc/tabs-définitions.js
@@ -4,7 +4,6 @@ function MVTabsDéfinitions(mListeDéfinitions) { // Modèle ou vue ???
makeField(this, 'définitionActive', 0);
}
-debugctr = 0;
function VTitresTabsDéfinitions(mvTabsDéfinitions, emplacement) {
makeView(this, 'vTitresTabsDéfinitions', emplacement, 'vTitresTabs', 'vTitreAucuneDéfinition', 'vNouvelleDéfinition');
@@ -55,7 +54,7 @@ function VTitresTabsDéfinitions(mvTabsDéfinitions, emplacement) {
this.vueNormale();
}
-function VContenusTabsDéfinitions(mvTabsDéfinitions, emplacement) {
+function VContenusTabsDéfinitions(mvTabsDéfinitions, emplacement, vInstanceBlocParente) {
makeView(this, 'vContenusTabsDéfinitions', emplacement, 'vContenusTabs', 'vContenuAucuneDéfinition');
var listeVues = {};
@@ -63,7 +62,7 @@ function VContenusTabsDéfinitions(mvTabsDéfinitions, emplacement) {
// Actions
this.ajoutDéfinition = function(mListeDéfinitions, mDéfinition) {
- var vd = new VDéfinition(mDéfinition, that.parties.vContenusTabs);
+ var vd = new VDéfinition(mDéfinition, that.parties.vContenusTabs, vInstanceBlocParente);
listeVues[mDéfinition.uid] = vd;
that.vueNormale();
};
diff --git a/jside4/style2.css b/jside4/style2.css
@@ -32,8 +32,8 @@
.lien {
background-color: lightblue;
position: absolute;
- top: -10px;
- left: -10px;
+ top: 10px;
+ left: 10px;
width: 5px;
height: 5px;
}
\ No newline at end of file
diff --git a/jside4/test.js b/jside4/test.js
@@ -7,9 +7,11 @@ $(function() {
mFibo.mListeDéfinitions().addDéfinitions(mDéfinitionFibo);
var mMoinsUn = new MBloc();
+ mMoinsUn.mTitreBloc().titre('x - 1');
mDéfinitionFibo.addInstancesBlocs(new MInstanceBloc(mMoinsUn));
var mUn = new MBloc();
+ mUn.mTitreBloc().titre('1');
mDéfinitionFibo.addInstancesBlocs(new MInstanceBloc(mUn));
window.setTimeout(function() {