définition.js (3697B)
1 function MDéfinition() { 2 makeUid(this); 3 makeField(this, 'mTitreDéfinition', new MTitreDéfinition()); 4 makeCollection(this, 'instancesBlocs'); 5 makeCollection(this, 'connexions'); 6 } 7 8 function findVPort(vInstancesBlocsFilles, mPort) { 9 for (var i = 0; i < vInstancesBlocsFilles.length; i++) { 10 var jtab = [vInstancesBlocsFilles[i].vBloc.vpe, vInstancesBlocsFilles[i].vBloc.vps]; 11 for (var j = 0; j < jtab.length; j++) { 12 var ktab = jtab[j].vPortsFilles; 13 for (var k = 0; k < ktab.length; ktab++) { 14 if (ktab[k].mPort == mPort) return ktab[k]; 15 } 16 } 17 } 18 } 19 20 function findVPortBis(vInstancesBlocsFilles, mPort) { 21 for (var i = 0; i < vInstancesBlocsFilles.length; i++) { 22 var jtab = [vInstancesBlocsFilles[i].vBloc.vpe, vInstancesBlocsFilles[i].vBloc.vps]; 23 for (var j = 0; j < jtab.length; j++) { 24 var ktab = jtab[j].vPortsFilles; 25 for (var k = 0; k < ktab.length; ktab++) { 26 if (ktab[k].mPort == mPort) return ktab[k]; 27 } 28 } 29 } 30 } 31 32 function VDéfinition(mDéfinition, emplacement, vInstanceBlocParente) { 33 makeView(this, 'vDéfinition', emplacement, 'vTypeJs', 'vTypeD', 'vContenuJs', 'vCodeJs', 'vContenu'); 34 35 var vInstancesBlocsFilles = []; 36 var that = this; 37 38 // Actions 39 this.visible = function(val) { 40 if (val) that.vue.show(); 41 else that.vue.hide(); 42 }; 43 44 this.ajoutInstanceBloc = function(_mDéfinition, mInstanceBloc) { 45 mInstanceBloc.dansDéfinition = mDéfinition; // TODO hack 46 var vib = new VInstanceBloc(mInstanceBloc, that.parties.vContenu); 47 vInstancesBlocsFilles.push(vib); 48 }; 49 50 this.ajoutConnexion = function(_mDéfinition, mConnexion) { 51 console.log(mConnexion); 52 if (!mConnexion.deBloc()) { 53 var deVPort = findVPort(vInstancesBlocsFilles, mConnexion.deMPort()); 54 } else { 55 var deVPort = findVPort([vInstanceBlocParente], mConnexion.deMPort()); 56 } 57 if (!mConnexion.versBloc()) { 58 var versVPort = findVPort(vInstancesBlocsFilles, mConnexion.versMPort()); 59 } else { 60 var versVPort = findVPort([vInstanceBlocParente], mConnexion.versMPort()); 61 } 62 var mvic = new MVInstanceConnexion(null, deVPort.vue, versVPort.vue); 63 new VInstanceConnexion(mvic, $('#éditeur')); 64 } 65 66 this.estTypeJs = false; 67 this.vueNormale = function() { 68 if (that.estTypeJs) { 69 that.parties.vTypeJs.hide(); 70 that.parties.vContenu.hide(); 71 that.parties.vTypeD.show(); 72 that.parties.vContenuJs.show(); 73 } else { 74 that.parties.vTypeJs.show(); 75 that.parties.vContenu.show(); 76 that.parties.vTypeD.hide(); 77 that.parties.vContenuJs.hide(); 78 } 79 } 80 81 this.typeJavaScript = function() { 82 that.estTypeJs = true; 83 that.vueNormale(); 84 }; 85 86 this.typeDataflow = function() { 87 that.estTypeJs = false; 88 that.vueNormale(); 89 }; 90 91 // Binding 92 mDéfinition.onAddInstancesBlocs(this.ajoutInstanceBloc); 93 for (var i = 0; i < mDéfinition.instancesBlocs.length; i++) { 94 this.ajoutInstanceBloc(mDéfinition, mDéfinition.instancesBlocs[i]); 95 } 96 97 mDéfinition.onAddConnexions(this.ajoutConnexion); 98 for (var i = 0; i < mDéfinition.connexions.length; i++) { 99 this.ajoutConnexion(mDéfinition, mDéfinition.connexions[i]); 100 } 101 102 that.parties.vTypeJs.click(this.typeJavaScript); 103 that.parties.vTypeD.click(this.typeDataflow); 104 105 // Défauts 106 this.vueNormale(); 107 }