tabs-définitions.js (3307B)
1 function MVTabsDéfinitions(mListeDéfinitions) { // Modèle ou vue ??? 2 makeUid(this); 3 this.mListeDéfinitions = mListeDéfinitions; 4 makeField(this, 'définitionActive', 0); 5 } 6 7 function VTitresTabsDéfinitions(mvTabsDéfinitions, emplacement) { 8 makeView(this, 'vTitresTabsDéfinitions', emplacement, 'vTitresTabs', 'vTitreAucuneDéfinition', 'vNouvelleDéfinition'); 9 10 var listeVues = {}; 11 var that = this; 12 13 // Actions 14 this.actionNouvelleDéfinition = function() { 15 mvTabsDéfinitions.mListeDéfinitions.addDéfinitions(new MDéfinition()); 16 }; 17 18 this.ajoutDéfinition = function(mListeDéfinitions, mDéfinition) { 19 var vtd = new VTitreDéfinition(mDéfinition.mTitreDéfinition(), that.parties.vTitresTabs); 20 mvTabsDéfinitions.définitionActive(mDéfinition); 21 vtd.vue.click(function(){ // TODO : pas propre, devrait être vtd.onClick(). 22 mvTabsDéfinitions.définitionActive(mDéfinition); 23 }) 24 listeVues[mDéfinition.uid] = vtd; 25 that.vueNormale(); 26 }; 27 28 this.switchDéfinition = function(_mvTabsDéfinitions, _définitionActive) { 29 for (var i in listeVues) 30 listeVues[i].active(i == mvTabsDéfinitions.définitionActive().uid); 31 }; 32 33 this.vueNormale = function() { 34 if (mvTabsDéfinitions.mListeDéfinitions.définitions.length == 0) { 35 that.parties.vTitreAucuneDéfinition.show(); 36 } else { 37 that.parties.vTitreAucuneDéfinition.hide(); 38 } 39 that.switchDéfinition(); 40 }; 41 42 // Binding 43 mvTabsDéfinitions.mListeDéfinitions.onAddDéfinitions(this.ajoutDéfinition); 44 var mld = mvTabsDéfinitions.mListeDéfinitions; 45 for (var i = 0; i < mld.définitions.length; i++) { 46 this.ajoutDéfinition(mld, mld.définitions[i]); 47 } 48 49 mvTabsDéfinitions.onChangeDéfinitionActive(this.switchDéfinition); 50 51 this.parties.vNouvelleDéfinition.click(this.actionNouvelleDéfinition); 52 53 // Défauts 54 this.vueNormale(); 55 } 56 57 function VContenusTabsDéfinitions(mvTabsDéfinitions, emplacement, vInstanceBlocParente) { 58 makeView(this, 'vContenusTabsDéfinitions', emplacement, 'vContenusTabs', 'vContenuAucuneDéfinition'); 59 60 var listeVues = {}; 61 var that = this; 62 63 // Actions 64 this.ajoutDéfinition = function(mListeDéfinitions, mDéfinition) { 65 var vd = new VDéfinition(mDéfinition, that.parties.vContenusTabs, vInstanceBlocParente); 66 listeVues[mDéfinition.uid] = vd; 67 that.vueNormale(); 68 }; 69 70 this.switchDéfinition = function(_mvTabsDéfinitions, _définitionActive) { 71 for (var i in listeVues) 72 listeVues[i].visible(i == mvTabsDéfinitions.définitionActive().uid); 73 }; 74 75 this.vueNormale = function() { 76 if (mvTabsDéfinitions.mListeDéfinitions.définitions.length == 0) { 77 that.parties.vContenuAucuneDéfinition.show(); 78 } else { 79 that.parties.vContenuAucuneDéfinition.hide(); 80 } 81 that.switchDéfinition(); 82 }; 83 84 // Binding 85 mvTabsDéfinitions.mListeDéfinitions.onAddDéfinitions(this.ajoutDéfinition); 86 mvTabsDéfinitions.onChangeDéfinitionActive(this.switchDéfinition); 87 88 // Défauts 89 this.vueNormale(); 90 }