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