/* [0] Constructeur -> définit le conteneur et le bouton d'ajout =========================================================*/ function inputPhoneFiche(container, navContainer){ this.container = container; this.nav_container = navContainer; } /* [1] Attributs =========================================================*/ inputPhoneFiche.prototype = { container: this.container, // Conteneur des fiche fiches relation nav_container: this.nav_container, // Conteneur de la navigation entre les fiches selected: 0, // UID de la FICHE sélectionnée handler: null, // Fonction pour l'enregistrement et la synchronisation des données defaultData: { // Valeurs par défaut firstname: '', lastname: '', username: '', sexe: [ {status:true}, {status:false}], age: '', job: '.', famsit: [ {status:true}, {status:false}, {status:false} ], // Choix 1 à 3 studies: '.', reltype: [ {status:true}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}], // Choix 1 à 9 reltypeSpecial: '', city: '', loc: [ {status:true}, {status:false}, {status:false}, {status:false} ], duration: ['', ''], context: [ {status:true}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}, {status:false}], // Choix 1 à 14 contextSpecial: ['', '', ''], freq: [ [ {status:true}, {status:false}, {status:false}, {status:false} ], [ {status:true}, {status:false}, {status:false}, {status:false} ], [ {status:true}, {status:false}, {status:false}, {status:false} ], [ {status:true}, {status:false}, {status:false}, {status:false} ], [ {status:true}, {status:false}, {status:false}, {status:false} ]], connect: [ [ {status:true}, {status:false} ], [ {status:true}, {status:false} ], [ {status:true}, {status:false} ], [ {status:true}, {status:false} ], [ {status:true}, {status:false} ], [ {status:true}, {status:false} ]], connectSpecial: ['', ''] } }; /* [2] Gestion de l'enregistrement des formulaires fiche fiches relation =========================================================*/ inputPhoneFiche.prototype.fieldsToStorage = function(){ console.log('FICHE: FIELDS TO STORAGE'); // {1} Pour chaque formulaire de contact présent // var existingFiches = $$('article.relation-panel .fiche-relation'); for( var i = 0 ; i < existingFiches.length ; i++ ){ // {2} On initialise notre deflater pour récupérer les valeurs // var deflater = new FormDeflater(existingFiches[i], ['input', 'select'], ['data-name']); // {3} On enregistre ce contact si le numéro n'est pas vide et soit pseudo/prénom/nom // var deflated = deflater.deflate(); console.log(deflated); // {4} On récupère les données du LSI si elles existent // var existingData = lsi.get('fiches', 'form'+deflated.uid.value); // Si n'existe pas, on initialise if( existingData === false ){ existingData.username = 'inconnu'; existingData.firstname = 'inconnu'; existingData.lastname = 'inconnu'; } // {5} On récupère et met en forme les valeurs du deflater // var obj = { uid: deflated.uid.value, firstname: existingData.firstname, lastname: existingData.lastname, username: existingData.username, sexe: deflated.sexe, // Choix 1 à 2 age: deflated.age.value, job: deflated.job.value, famsit: deflated.famsit, // Choix 1 à 3 studies: deflated.studies.value, reltype: deflated.reltype, // Choix 1 à 9 reltypeSpecial: deflated.reltypeSpecial.value, city: deflated.city.value, loc: deflated.loc, // Choix 1 à 3 duration: [ deflated.duration[0].value, // Durée de la relation en mois deflated.duration[1].value // Durée de la relation en années ], context: deflated.context, // Choix 1 à 14 contextSpecial: [ deflated.contextSpecial[0].value, // Valeur du contexte si context[11] deflated.contextSpecial[1].value, // Valeur du contexte si context[12] deflated.contextSpecial[2].value // Valeur du contexte si context[13] ], freq: [ deflated.freq0, // Choix 1 à 4 deflated.freq1, // Choix 1 à 4 deflated.freq2, // Choix 1 à 4 deflated.freq3, // Choix 1 à 4 deflated.freq4 // Choix 1 à 4 ], connect: [ deflated.connect0, // Choix 1 à 2 deflated.connect1, // Choix 1 à 2 deflated.connect2, // Choix 1 à 2 deflated.connect3, // Choix 1 à 2 deflated.connect4, // Choix 1 à 2 deflated.connect5 // Choix 1 à 2 ], connectSpecial: [ deflated.connectSpecial[0].value, deflated.connectSpecial[1].value ] }; // {6} On enregistre les données dans le 'localStorage' // lsi.set('fiches', 'form'+obj.uid, obj); } // {7} On met à jour le rendu // // this.storageToFields(); }; /* [3] Gestion de l'ajout physique d'un nouveau contact =========================================================*/ /* * * @objectData Objet contenant les informations nécessaires à l'affichage * */ inputPhoneFiche.prototype.add = function(objectData){ console.log('FICHE: ADD'); // Si pas d'UID, on retourne une erreur if( objectData.uid == null ) return false; /* (0) Gestion du formattage des valeur */ // {1} Champs de texte // objectData.firstname = (objectData.firstname != null) ? objectData.firstname : this.defaultData.firstname; objectData.lastname = (objectData.lastname != null) ? objectData.lastname : this.defaultData.lastname; objectData.username = (objectData.username != null) ? objectData.username : this.defaultData.username; objectData.age = (objectData.age != null) ? objectData.age : this.defaultData.age; objectData.city = (objectData.city != null) ? objectData.city : this.defaultData.city; objectData.duration[0] = (objectData.duration[0] != null) ? objectData.duration[0] : this.defaultData.duration[0]; objectData.duration[1] = (objectData.duration[1] != null) ? objectData.duration[1] : this.defaultData.duration[1]; objectData.reltypeSpecial = (objectData.reltypeSpecial != null) ? objectData.reltypeSpecial : this.defaultData.reltypeSpecial; objectData.contextSpecial[0] = (objectData.contextSpecial[0] != null) ? objectData.contextSpecial[0] : this.defaultData.contextSpecial[0]; objectData.contextSpecial[1] = (objectData.contextSpecial[1] != null) ? objectData.contextSpecial[1] : this.defaultData.contextSpecial[1]; objectData.contextSpecial[2] = (objectData.contextSpecial[2] != null) ? objectData.contextSpecial[2] : this.defaultData.contextSpecial[2]; objectData.connectSpecial[0] = (objectData.connectSpecial[0] != null) ? objectData.connectSpecial[0] : this.defaultData.connectSpecial[0]; objectData.connectSpecial[1] = (objectData.connectSpecial[1] != null) ? objectData.connectSpecial[1] : this.defaultData.connectSpecial[1]; // {2} Champs