Avancement au niveau des interactions dynamiques des différentes entités pour la saisie(CONTACT, MINI FICHE, FICHE). 'Classization' de la gestion des CONTACTS

This commit is contained in:
xdrm-brackets 2016-04-26 11:30:02 +02:00
parent 54b9c82052
commit 59a38ff6d2
14 changed files with 564 additions and 196 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -34,21 +34,27 @@ contactBuilder.setLayout(
var miniFicheBuilder = new HTMLBuilder();
miniFicheBuilder.setLayout(
"<article class='mini-fiche-relation'>\n"+
"\t<input type='hidden' data-name='uid' value='@uid'>\n"+
"\t<input type='hidden' data-name='firstname' value='@firstname'>\n"+
"\t<input type='hidden' data-name='lastname' value='@lastname'>\n"+
"\t<input type='hidden' data-name='username' value='@username'>\n"+
"\t<span data-space></span>\n"+
"\t<h4 data-icon='o' class='color2'>@firstname @lastname (@username)</h4>\n"+
"\t<h5 class='nobold color0'>\n"+
"\t\t<input type='radio' name='sexe_min_@uid' checked data-name='sexe' id='sexeH_min_@uid'><label for='sexeH_min_@uid'>Homme</label>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' class='btm' name='sexe_min_@uid' data-name='sexe' id='sexeF_min_@uid'><label for='sexeF_min_@uid'>Femme</label>\n"+
"\t\t<input type='radio' name='sexe_min_@uid' checked data-name='sexe' id='sexeH_min_@uid' checked='@sexe_A'><label for='sexeH_min_@uid'>Homme</label>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' class='btm' name='sexe_min_@uid' data-name='sexe' id='sexeF_min_@uid' checked='@sexe_B'><label for='sexeF_min_@uid'>Femme</label>\n"+
"\t</h5>\n"+
"\t<h5 class='nobold color0'>\n"+
"\t\t<input type='number' min='5' max='120' data-name='age' placeholder='Age'>\n"+
"\t\t<input type='number' min='5' max='120' data-name='age' placeholder='Age' value='@age'>\n"+
"\t</h5>\n"+
"\t<h5 class='nobold color0'>\n"+
"\t\t<span class='select-container'><select data-name='job'>\n"+
"\t\t<span class='select-container'><select data-name='job' value='@job'>\n"+
"\t\t\t<option value='.' disabled selected>Dernière profession exercée:</option>\n"+
"\t\t\t<option value='0'>Inconnue</option>\n"+
"\t\t\t<option value='1-' disabled>Agriculateur exploitants</option>\n"+
@ -93,10 +99,10 @@ miniFicheBuilder.setLayout(
"\t<h5 class='nobold color0'>\n"+
"\t\tOù habite t-elle/il ?<br>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' checked name='loc_min_@uid' data-name='loc' id='locA_min_@uid'><label for='locA_min_@uid'>- de 10km</label><br>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' name='loc_min_@uid' data-name='loc' id='locB_min_@uid'><label for='locB_min_@uid'>de 10km à 30km</label><br>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' name='loc_min_@uid' data-name='loc' id='locC_min_@uid'><label for='locC_min_@uid'>de 30km à 100km</label><br>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' name='loc_min_@uid' data-name='loc' id='locD_min_@uid'><label for='locD_min_@uid'>+ de 100km</label>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' checked name='loc_min_@uid' data-name='loc' id='locA_min_@uid' checked='@loc_A'><label for='locA_min_@uid'>- de 10km</label><br>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' name='loc_min_@uid' data-name='loc' id='locB_min_@uid' checked='@loc_B'><label for='locB_min_@uid'>de 10km à 30km</label><br>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' name='loc_min_@uid' data-name='loc' id='locC_min_@uid' checked='@loc_C'><label for='locC_min_@uid'>de 30km à 100km</label><br>\n"+
"\t\t&nbsp&nbsp&nbsp<input type='radio' name='loc_min_@uid' data-name='loc' id='locD_min_@uid' checked='@loc_D'><label for='locD_min_@uid'>+ de 100km</label>\n"+
"\t</h5>\n"+
"</article>");
@ -245,7 +251,7 @@ ficheBuilder.setLayout(
"\t<h4 data-icon='a'>Type de relation</h4>"+
"\t<h5 class='nobold color0'>"+
"\t\t\t&nbsp&nbsp&nbsp<input type='radio' name='reltype_@uid' id='reltype0_@uid'><label for='reltype0_@uid'>Père, mère ou équivalent</label><br>"+
"\t\t\t&nbsp&nbsp&nbsp<input type='radio' name='reltype_@uid' id='reltype0_@uid' checked><label for='reltype0_@uid'>Père, mère ou équivalent</label><br>"+
"\t\t\t&nbsp&nbsp&nbsp<input type='radio' name='reltype_@uid' id='reltype1_@uid'><label for='reltype1_@uid'>Frère ou soeur</label><br>"+
"\t\t\t&nbsp&nbsp&nbsp<input type='radio' name='reltype_@uid' id='reltype2_@uid'><label for='reltype2_@uid'>Autre membre de la famille</label><br>"+
"\t\t\t&nbsp&nbsp&nbsp<input type='radio' name='reltype_@uid' id='reltype3_@uid'><label for='reltype3_@uid'>Relation amoureuse</label><br>"+

View File

@ -0,0 +1,5 @@
function inputPhoneContact(a,c){this.container=a;this.add_button=c}inputPhoneContact.prototype={container:this.container,add_button:this.add_button};
inputPhoneContact.prototype.fieldsToStorage=function(){console.log("CONTACTS: FIELDS TO STORAGE");for(var a=$$("article.contact-panel .new-contact"),c=0;c<a.length;c++){var d=a[c].parentNode.children.indexOf(a[c]),b=(new FormDeflater(a[c],["input"],["data-name"])).deflate(),e=0<b.number.value.length;if(e=e&&0<b.username.value.length+b.firstname.value.length+b.lastname.value.length)b={number:b.number.value,username:b.username.value,firstname:b.firstname.value,lastname:b.lastname.value},lsi.set("contacts",
"form"+d,b),e=lsi.get("mini-fiches","form"+d),!1===e?lsi.set("mini-fiches","form"+d,{uid:d,firstname:b.firstname,lastname:b.lastname,username:b.username,age:"",sexe:[!0,!1],job:".",location:[!0,!1,!1,!1]}):(e.firstname=b.firstname,e.lastname=b.lastname,e.username=b.username,lsi.set("mini-fiches","form"+d,e))}this.storageToFields()};
inputPhoneContact.prototype.add=function(a){console.log("CONTACTS: ADD");a.number=null!=a.number?a.number:"";a.username=null!=a.username?a.username:"";a.firstname=null!=a.firstname?a.firstname:"";a.lastname=null!=a.lastname?a.lastname:"";this.container.innerHTML+=contactBuilder.build(a);a=$$('article.contact-panel .new-contact input[type="submit"]');for(var c=this,d=0;d<a.length;d++)a[d].removeEventListener("click",function(a){c.fieldsToStorage()},!1),a[d].addEventListener("click",function(a){c.fieldsToStorage()},
!1)};inputPhoneContact.prototype.storageToFields=function(){console.log("CONTACTS: STORAGE TO FIELDS");var a=lsi.keys("contacts");this.container.innerHTML="";for(var c=0;c<a.length;c++){var d=lsi.get("contacts",a[c]);this.add(d)}this.add({number:"",firstname:"",lastname:"",username:""})};inputPhoneContact.prototype.attach=function(){console.log("CONTACTS: ATTACH");lsi.createDataset("contacts");var a=this;this.add_button.addEventListener("click",function(c){a.fieldsToStorage()},!1);this.storageToFields()};

View File

@ -0,0 +1,178 @@
/* [0] Constructeur -> définit le conteneur et le bouton d'ajout
=========================================================*/
function inputPhoneContact(container, add_button){
this.container = container;
this.add_button = add_button;
}
/* [1] Attributs
=========================================================*/
inputPhoneContact.prototype = {
container: this.container, // Conteneur des formulaires de contact
add_button: this.add_button // Bouton d'ajout d'un formulaire
};
/* [2] Gestion de l'enregistrement des formulaires de contact
=========================================================*/
inputPhoneContact.prototype.fieldsToStorage = function(){
console.log('CONTACTS: FIELDS TO STORAGE');
// {1} Pour chaque formulaire de contact présent //
var existingContacts = $$('article.contact-panel .new-contact');
for( var i = 0 ; i < existingContacts.length ; i++ ){
// {2} On récupère les informations relatives à l'élément courant //
var indexInParent = existingContacts[i].parentNode.children.indexOf(existingContacts[i]);
// {3} On initialise notre deflater pour récupérer les valeurs //
var deflater = new FormDeflater(existingContacts[i], ['input'], ['data-name']);
// {4} On enregistre ce contact si le numéro n'est pas vide et soit pseudo/prénom/nom //
var deflated = deflater.deflate();
// Le numéro n'est pas vide
var validForm = deflated.number.value.length > 0;
// ET le pseudo et/ou le prénom et/ou le nom n'est pas vide
validForm = validForm && deflated.username.value.length+deflated.firstname.value.length+deflated.lastname.value.length > 0;
// Si le formulaire n'est pas valide, on ne l'enregistre pas
if( !validForm ) continue;
// {5} On récupère et met en forme les valeurs du deflater //
var obj = {
number: deflated.number.value,
username: deflated.username.value,
firstname: deflated.firstname.value,
lastname: deflated.lastname.value
};
// {6} On enregistre les données dans le 'localStorage' //
lsi.set('contacts', 'form'+indexInParent, obj);
// {7} On enregistre les données des MINI fiches associées //
var associatedMiniFiche = lsi.get('mini-fiches', 'form'+indexInParent);
// Si n'existe pas, on la crée
if( associatedMiniFiche === false ){
lsi.set('mini-fiches', 'form'+indexInParent, {
uid: indexInParent,
firstname: obj.firstname,
lastname: obj.lastname,
username: obj.username,
age: '',
sexe: [true, false],
job: '.',
location: [true, false, false, false]
});
// Sinon, on met à jour
}else{
associatedMiniFiche.firstname = obj.firstname;
associatedMiniFiche.lastname = obj.lastname;
associatedMiniFiche.username = obj.username;
lsi.set('mini-fiches', 'form'+indexInParent, associatedMiniFiche);
}
}
// {8} On met à jour le rendu des contacts//
this.storageToFields();
};
/* [3] Gestion de l'ajout physique d'un nouveau contact
=========================================================*/
/*
*
* @objectData<Object> Objet contenant les informations nécessaires à l'affichage
*
*/
inputPhoneContact.prototype.add = function(objectData){
console.log('CONTACTS: ADD');
// {0} On formatte l'object //
objectData.number = (objectData.number != null) ? objectData.number : '';
objectData.username = (objectData.username != null) ? objectData.username : '';
objectData.firstname = (objectData.firstname != null) ? objectData.firstname : '';
objectData.lastname = (objectData.lastname != null) ? objectData.lastname : '';
// {1} On ajoute le HTML //
this.container.innerHTML += contactBuilder.build(objectData);
// {2} On attache les évènements sur les boutons 'Enregistrer' //
var contactSubmits = $$('article.contact-panel .new-contact input[type="submit"]');
// On met à jour les listener (remove, puis add)
var ptr = this;
for( var i = 0 ; i < contactSubmits.length ; i++ ){
contactSubmits[i].removeEventListener('click', function(e){ ptr.fieldsToStorage(); }, false);
contactSubmits[i].addEventListener('click', function(e){ ptr.fieldsToStorage(); }, false);
}
};
/* [4] Gestion de l'affichage depuis le 'localStorage'
=========================================================*/
inputPhoneContact.prototype.storageToFields = function(){
console.log('CONTACTS: STORAGE TO FIELDS');
// {1} Pour chaque contact du 'localStorage' //
var existingContacts = lsi.keys('contacts');
// On réinitialise le HTML
this.container.innerHTML = '';
for( var i = 0 ; i < existingContacts.length ; i++ ){
// {2} On récupère les informations du contact //
var contactData = lsi.get('contacts', existingContacts[i]);
// {3} On ajoute un contact à la liste //
this.add(contactData);
}
// On ajoute un champ de plus à remplir
this.add({number:'', firstname:'', lastname:'', username:''});
// {4} On met à jour les MINI fiches //
// miniFiche.fieldsToStorage();
};
/* [5] Point d'amorçage de la gestion des contacts
=========================================================*/
inputPhoneContact.prototype.attach = function(){
console.log('CONTACTS: ATTACH');
/* (1) On initialise le jeu de données */
lsi.createDataset('contacts');
/* (2) On attache l'évènement sur le bouton d'ajout de contact */
var ptr = this;
this.add_button.addEventListener('click', function(e){ ptr.fieldsToStorage(); }, false);
/* (3) On charge les contacts depuis la mémoire ('localStorage') */
this.storageToFields();
};

View File

@ -2,8 +2,8 @@ function pageManagerClass(){}var ptrPageManagerClass;
pageManagerClass.prototype={depJS:null,depCSS:null,xhr:[],activeXHR:null,page:null,vars:[],path:"",jsPath:"js",cssPath:"css",pagelist:null,container:null,ajax:function(b,c,f,a){for(var d=0;d<this.xhr.length;d++)this.xhr=this.xhr.slice(0,d-1).concat(this.xhr.slice(d,this.xhr.length-1));var e;e=window.XMLHttpRequest?this.xhr.push(new XMLHttpRequest)-1:this.xhr.push(new ActiveXObject("Microsoft.XMLHttpRequest"))-1;this.activeXHR=this.xhr[e];var g=this;this.xhr[e].onreadystatechange=function(){4==g.xhr[e].readyState&&
(-1<[0,200].indexOf(g.xhr[e].status)?c(g.xhr[e].responseText):c())};f="string"==typeof f&&/^POST|GET$/i.test(f)?f.toUpperCase():"POST";a="POST"==f&&"object"==typeof a&&a instanceof FormData?a:null;this.xhr[e].open(f,b,!0);this.xhr[e].send(a);return this},explodeURL:function(b){b=1<=arguments.length?b:document.URL;if(null!=this.pagelist&&/^(?:(?:http:\/\/)?[^\/]+)\/([a-z0-9_]+)\/?(?:\/((?:.+\/)+)\/?)?$/i.test(b)){for(var c=RegExp.$2.split("/");""==c[c.length-1];)c.pop();return-1<this.pagelist.indexOf(RegExp.$1)?
{page:RegExp.$1,"var":c}:null}return null},loadDependencies:function(){"object"==typeof this.depCSS&&this.depCSS instanceof Element&&this.depCSS.parentNode==document.head&&document.head.removeChild(this.depCSS);"object"==typeof this.depJS&&this.depJS instanceof Element&&this.depJS.parentNode==document.head&&document.head.removeChild(this.depJS);ptrPageManagerClass=this;this.ajax(this.path+"/"+this.cssPath+"/"+this.page+".css",function(b){null!=b?(ptrPageManagerClass.depCSS=document.createElement("link"),
ptrPageManagerClass.depCSS.rel="stylesheet",ptrPageManagerClass.depCSS.type="text/css",ptrPageManagerClass.depCSS.href=ptrPageManagerClass.path+"/"+ptrPageManagerClass.cssPath+"/"+ptrPageManagerClass.page+".css",document.head.appendChild(ptrPageManagerClass.depCSS)):console.warn("[loadDependencies_Error] - ("+ptrPageManagerClass.path+"/"+ptrPageManagerClass.cssPath+"/"+ptrPageManagerClass.page+".css)")});this.ajax(this.path+"/"+this.jsPath+"/"+this.page+"-min.js",function(b){null!=b?(ptrPageManagerClass.depJS=
document.createElement("script"),ptrPageManagerClass.depJS.type="text/javascript",ptrPageManagerClass.depJS.src=ptrPageManagerClass.path+"/"+ptrPageManagerClass.jsPath+"/"+ptrPageManagerClass.page+"-min.js",document.head.appendChild(ptrPageManagerClass.depJS)):console.warn("[loadDependencies_Error] - ("+ptrPageManagerClass.path+"/"+ptrPageManagerClass.jsPath+"/"+ptrPageManagerClass.page+".js)")})},updateURL:function(){0<this.vars.length?window.history.pushState(this.page,this.page,"/"+this.page+"/"+
this.vars.join("/")+"/"):window.history.pushState(this.page,this.page,"/"+this.page+"/")},setPage:function(b,c,f,a){var d="object"==typeof a&&a instanceof Array?a:null;if(null!=d)for(a=0;a<d.length&&(d="string"==typeof d[a]&&/^[a-z0-9_]+$/i.test(d[a])?d:null,null!=d);a++);this.pagelist=null!=d?d:this.pagelist;this.page=this.pagelist[0];this.path="string"==typeof c?c:this.path;this.container="object"==typeof f&&f instanceof Element?f:this.container;if(null!=this.pagelist&&null!=this.container)if("string"==
typeof b&&-1<this.pagelist.indexOf(b)){this.page=b;var e=this;b=new FormData;for(a=0;a<this.vars.length;a++)b.append(this.vars[a],null);this.ajax(this.path+"/"+this.page+".php",function(a){e.container.innerHTML=a;e.loadDependencies()},"POST",b);this.updateURL()}else if(c=this.explodeURL(),null!=c){this.page=c.page;var g=this;b=new FormData;for(a=this.vars.length=0;a<c["var"].length;a++)this.vars[a]=c["var"][a],b.append(this.vars[a],null);this.ajax(this.path+"/"+this.page+".php",function(a){g.container.innerHTML=
ptrPageManagerClass.depCSS.rel="stylesheet",ptrPageManagerClass.depCSS.type="text/css",ptrPageManagerClass.depCSS.href=ptrPageManagerClass.path+"/"+ptrPageManagerClass.cssPath+"/"+ptrPageManagerClass.page+".css",document.head.appendChild(ptrPageManagerClass.depCSS)):console.warn("[loadDependencies_Error] - ("+ptrPageManagerClass.path+"/"+ptrPageManagerClass.cssPath+"/"+ptrPageManagerClass.page+".css)")});this.ajax(this.path+"/"+this.jsPath+"/"+this.page+".js",function(b){null!=b?(ptrPageManagerClass.depJS=
document.createElement("script"),ptrPageManagerClass.depJS.type="text/javascript",ptrPageManagerClass.depJS.src=ptrPageManagerClass.path+"/"+ptrPageManagerClass.jsPath+"/"+ptrPageManagerClass.page+".js",document.head.appendChild(ptrPageManagerClass.depJS)):console.warn("[loadDependencies_Error] - ("+ptrPageManagerClass.path+"/"+ptrPageManagerClass.jsPath+"/"+ptrPageManagerClass.page+".js)")})},updateURL:function(){0<this.vars.length?window.history.pushState(this.page,this.page,"/"+this.page+"/"+this.vars.join("/")+
"/"):window.history.pushState(this.page,this.page,"/"+this.page+"/")},setPage:function(b,c,f,a){var d="object"==typeof a&&a instanceof Array?a:null;if(null!=d)for(a=0;a<d.length&&(d="string"==typeof d[a]&&/^[a-z0-9_]+$/i.test(d[a])?d:null,null!=d);a++);this.pagelist=null!=d?d:this.pagelist;this.page=this.pagelist[0];this.path="string"==typeof c?c:this.path;this.container="object"==typeof f&&f instanceof Element?f:this.container;if(null!=this.pagelist&&null!=this.container)if("string"==typeof b&&-1<
this.pagelist.indexOf(b)){this.page=b;var e=this;b=new FormData;for(a=0;a<this.vars.length;a++)b.append(this.vars[a],null);this.ajax(this.path+"/"+this.page+".php",function(a){e.container.innerHTML=a;e.loadDependencies()},"POST",b);this.updateURL()}else if(c=this.explodeURL(),null!=c){this.page=c.page;var g=this;b=new FormData;for(a=this.vars.length=0;a<c["var"].length;a++)this.vars[a]=c["var"][a],b.append(this.vars[a],null);this.ajax(this.path+"/"+this.page+".php",function(a){g.container.innerHTML=
a;g.loadDependencies()},"POST",b);this.updateURL()}else this.setPage(this.pagelist[0]);else console.warn("pagelist et container manquant");return this},refresh:function(){this.setPage(this.page);return this}};

View File

@ -144,11 +144,11 @@ pageManagerClass.prototype = {
});
// si le fichier js existe
this.ajax(this.path+'/'+this.jsPath+'/'+this.page+'-min.js', function(e){
this.ajax(this.path+'/'+this.jsPath+'/'+this.page+'.js', function(e){
if( e != null ){ // on charge la dépendance JS si le fichier existe
ptrPageManagerClass.depJS = document.createElement('script');
ptrPageManagerClass.depJS.type = 'text/javascript';
ptrPageManagerClass.depJS.src = ptrPageManagerClass.path+'/'+ptrPageManagerClass.jsPath+'/'+ptrPageManagerClass.page+'-min.js';
ptrPageManagerClass.depJS.src = ptrPageManagerClass.path+'/'+ptrPageManagerClass.jsPath+'/'+ptrPageManagerClass.page+'.js';
document.head.appendChild(ptrPageManagerClass.depJS);
}else
console.warn('[loadDependencies_Error] - ('+ptrPageManagerClass.path+'/'+ptrPageManagerClass.jsPath+'/'+ptrPageManagerClass.page+'.js)');

View File

@ -30,10 +30,10 @@
</center>
<p>Bienvenue sur la Web Application dévéloppée par des chercheurs du CNRS appartenant au LabEx SMS (Structuration des Mondes Sociaux) de l'université de Toulouse.</p>
<p>Cette application va vous permettre de cartographier le réseau de vos amis et des relations sociales avec lesquels vous communiquez depuis votre téléphone, facebook, ou hors-ligne.</p>
<p>Cette application va vous permettre de cartographier le réseau des relations sociales avec lesquelles vous communiquez depuis votre téléphone, Facebook, ou hors-ligne.</p>
<p>Cette recherche est entièrement à but non lucratif, les informations que vous communiquez ne seront pas exploitées à des fins commerciales.</p>
<p>Vous pourrez accéder a la plateforme si vous avez été sondé afin de compléter, consulter et modifier vos informations.</p>
<p>Si vous avez participé à l'étude, vous pourrez accéder à la plateforme afin de compléter, consulter et modifier vos informations.</p>
</section>

View File

@ -118,7 +118,7 @@
<h5 class='nobold color0'>
<input type='radio' name='sexe' checked data-name='sexe' id='sexeH_0'><label for='sexeH_0'>Homme</label>
&nbsp&nbsp&nbsp<input type='radio' class='btm' name='sexe' data-name='sexe' id='sexeF_0'><label for='sexeF_0'>Femme</label>
&nbsp;&nbsp;&nbsp;<input type='radio' class='btm' name='sexe' data-name='sexe' id='sexeF_0'><label for='sexeF_0'>Femme</label>
</h5>
@ -172,9 +172,9 @@
<h5 class='nobold color0'>
Situation familiale:<br>
<h5 class='nobold color0'>
&nbsp&nbsp&nbsp<input type='radio' checked name='famsit' data-name='famsit' id='famsitA_0'><label for='famsitA_0'>Seul</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='famsit' data-name='famsit' id='famsitB_0'><label for='famsitB_0'>En couple sans enfants</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='famsit' data-name='famsit' id='famsitC_0'><label for='famsitC_0'>En couple avec enfants</label>
&nbsp;&nbsp;&nbsp;<input type='radio' checked name='famsit' data-name='famsit' id='famsitA_0'><label for='famsitA_0'>Seul</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='famsit' data-name='famsit' id='famsitB_0'><label for='famsitB_0'>En couple sans enfants</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='famsit' data-name='famsit' id='famsitC_0'><label for='famsitC_0'>En couple avec enfants</label>
</h5>
<h5 class='nobold color0'>
@ -210,129 +210,136 @@
<h4 data-icon='a'>Type de relation</h4>
<h5 class='nobold color0'>
&nbsp&nbsp&nbsp<input type='radio' name='reltype' id='reltype0'><label for='reltype0'>Père, mère ou équivalent</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='reltype' id='reltype1'><label for='reltype1'>Frère ou soeur</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='reltype' id='reltype2'><label for='reltype2'>Autre membre de la famille</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='reltype' id='reltype3'><label for='reltype3'>Relation amoureuse</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='reltype' id='reltype4'><label for='reltype4'>Collègue</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='reltype' id='reltype5'><label for='reltype5'>Voisin</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='reltype' id='reltype6'><label for='reltype6'>Ami</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='reltype' id='reltype7'><label for='reltype7'>Copain</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='reltype' id='reltype8'><label for='reltype8'>Autre : <input type='text' id='reltypeSpecial' placeholder='coéquipier de tennis, ..'></label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='reltype' id='reltype0' checked><label for='reltype0'>Père, mère ou équivalent</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='reltype' id='reltype1'><label for='reltype1'>Frère ou soeur</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='reltype' id='reltype2'><label for='reltype2'>Autre membre de la famille</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='reltype' id='reltype3'><label for='reltype3'>Relation amoureuse</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='reltype' id='reltype4'><label for='reltype4'>Collègue</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='reltype' id='reltype5'><label for='reltype5'>Voisin</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='reltype' id='reltype6'><label for='reltype6'>Ami</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='reltype' id='reltype7'><label for='reltype7'>Copain</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='reltype' id='reltype8'><label for='reltype8'>Autre : <input type='text' id='reltypeSpecial' placeholder='coéquipier de tennis, ..'></label><br>
</h5>
<h4 data-icon='m'> habite t-elle/il ?</h4>
<h5 class='nobold color0'>
&nbsp&nbsp&nbsp<input type='radio' checked name='loc' data-name='loc' id='locA_0'><label for='locA_0'>- de 5 minutes</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='loc' data-name='loc' id='locB_0'><label for='locB_0'>de 5 à 15 minutes</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='loc' data-name='loc' id='locC_0'><label for='locC_0'>de 15 à 60 minutes</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='loc' data-name='loc' id='locD_0'><label for='locD_0'>+ d'une heure</label><br>
<input type='text' data-name='city' placeholder='Ville'>
</h5>
<h5 class='nobold color0'>
&nbsp;&nbsp;&nbsp;<input type='radio' checked name='loc' data-name='loc' id='locA_0'><label for='locA_0'>- de 5 minutes</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='loc' data-name='loc' id='locB_0'><label for='locB_0'>de 5 à 15 minutes</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='loc' data-name='loc' id='locC_0'><label for='locC_0'>de 15 à 60 minutes</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='loc' data-name='loc' id='locD_0'><label for='locD_0'>+ d'une heure</label><br>
</h5>
<h5 class='nobold color0'>
Depuis quand connaissez-vous cette personne ?
<input type='number' data-name='duration' placeholder='Nombre de mois'>
Depuis quand connaissez-vous cette personne ?<br><br>
<input type='number' style='width: 5em;' data-name='durationM' min='0' max='11' step='1' placeholder='mois'>mois
et &nbsp;&nbsp;&nbsp;<input type='number' style='width: 5em;' data-name='durationY' min='0' max='100' step='1' placeholder='années'>ans.
</h5>
<h4 data-icon='d'>Contexte de rencontre</h4>
<h5 class='nobold color0'>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte0'> <label for='contexte0'>De la même famille</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte1'> <label for='contexte1'>Grandi ensemble</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte2'> <label for='contexte2'>Par mon mari/ma femme/relation amoureuse</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte3'> <label for='contexte3'>Par mes parents</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte4'> <label for='contexte4'>Par mes enfants</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte5'> <label for='contexte5'>Par un ami</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte6'> <label for='contexte6'>Comme voisin</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte7'> <label for='contexte7'>Par dautres membres de la famille</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte8'> <label for='contexte8'>Etudes</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte9'> <label for='contexte9'>Etudes supérieures</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte0'> <label for='contexte0'>De la même famille</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte1'> <label for='contexte1'>Grandi ensemble</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte2'> <label for='contexte2'>Par mon mari/ma femme/relation amoureuse</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte3'> <label for='contexte3'>Par mes parents</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte4'> <label for='contexte4'>Par mes enfants</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte5'> <label for='contexte5'>Par un ami</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte6'> <label for='contexte6'>Comme voisin</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte7'> <label for='contexte7'>Par dautres membres de la famille</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte8'> <label for='contexte8'>Etudes</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte9'> <label for='contexte9'>Etudes supérieures</label><br>
</h5>
<h5 class='nobold color0'>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte10'><label for='contexte10'>Au travail</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte11'><label for='contexte11'>Internet (quel contexte ? préciser <input type='text' id='contexteSpecial1' placeholder='facebook, youtube, twitter, ..'>)</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte12'><label for='contexte12'>Par une association (quel type : <input type='text' id='contexteSpecial2' placeholder='aide à la personne, sport, ..'>)</label><br>
&nbsp&nbsp&nbsp<input type='radio' name='contexte' id='contexte13'><label for='contexte13'>Autre : <input type='text' id='contexteSpecial3' placeholder='vacances, ..'></label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte10'><label for='contexte10'>Au travail</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte11'><label for='contexte11'>Internet (quel contexte ? préciser <input type='text' id='contexteSpecial1' placeholder='facebook, youtube, twitter, ..'>)</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte12'><label for='contexte12'>Par une association (quel type : <input type='text' id='contexteSpecial2' placeholder='aide à la personne, sport, ..'>)</label><br>
&nbsp;&nbsp;&nbsp;<input type='radio' name='contexte' id='contexte13'><label for='contexte13'>Autre : <input type='text' id='contexteSpecial3' placeholder='vacances, ..'></label><br>
</h5>
<h4 data-icon='b'>Avec quelle fréquence discutez-vous avec cette personne ?</h4>
<h5 class='nobold color0'>
Face à face<br>
&nbsp&nbsp&nbsp<input type='radio' name='freq0' id='freq01'><label for='freq01'>plusieurs fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq0' id='freq02'><label for='freq02'>1 fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq0' id='freq03'><label for='freq03'>1 fois par mois</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq0' id='freq04'><label for='freq04'>1 fois par an ou moins</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq0' id='freq01'><label for='freq01'>plusieurs fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq0' id='freq02'><label for='freq02'>1 fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq0' id='freq03'><label for='freq03'>1 fois par mois</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq0' id='freq04'><label for='freq04'>1 fois par an ou moins</label>
</h5>
<h5 class='nobold color0'>
Téléphone ou skype et équivalent<br>
&nbsp&nbsp&nbsp<input type='radio' name='freq1' id='freq11'><label for='freq11'>plusieurs fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq1' id='freq12'><label for='freq12'>1 fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq1' id='freq13'><label for='freq13'>1 fois par mois</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq1' id='freq14'><label for='freq14'>1 fois par an ou moins</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq1' id='freq11'><label for='freq11'>plusieurs fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq1' id='freq12'><label for='freq12'>1 fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq1' id='freq13'><label for='freq13'>1 fois par mois</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq1' id='freq14'><label for='freq14'>1 fois par an ou moins</label>
</h5>
<h5 class='nobold color0'>
SMS, et équivalents<br>
&nbsp&nbsp&nbsp<input type='radio' name='freq2' id='freq21'><label for='freq21'>plusieurs fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq2' id='freq22'><label for='freq22'>1 fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq2' id='freq23'><label for='freq23'>1 fois par mois</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq2' id='freq24'><label for='freq24'>1 fois par an ou moins</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq2' id='freq21'><label for='freq21'>plusieurs fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq2' id='freq22'><label for='freq22'>1 fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq2' id='freq23'><label for='freq23'>1 fois par mois</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq2' id='freq24'><label for='freq24'>1 fois par an ou moins</label>
</h5>
<h5 class='nobold color0'>
Courrier électronique<br>
&nbsp&nbsp&nbsp<input type='radio' name='freq3' id='freq31'><label for='freq31'>plusieurs fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq3' id='freq32'><label for='freq32'>1 fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq3' id='freq33'><label for='freq33'>1 fois par mois</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq3' id='freq34'><label for='freq34'>1 fois par an ou moins</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq3' id='freq31'><label for='freq31'>plusieurs fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq3' id='freq32'><label for='freq32'>1 fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq3' id='freq33'><label for='freq33'>1 fois par mois</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq3' id='freq34'><label for='freq34'>1 fois par an ou moins</label>
</h5>
<h5 class='nobold color0'>
Facebook ou autre réseau social<br>
&nbsp&nbsp&nbsp<input type='radio' name='freq4' id='freq41'><label for='freq41'>plusieurs fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq4' id='freq42'><label for='freq42'>1 fois par semaine</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq4' id='freq43'><label for='freq43'>1 fois par mois</label>
&nbsp&nbsp&nbsp<input type='radio' name='freq4' id='freq44'><label for='freq44'>1 fois par an ou moins</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq4' id='freq41'><label for='freq41'>plusieurs fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq4' id='freq42'><label for='freq42'>1 fois par semaine</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq4' id='freq43'><label for='freq43'>1 fois par mois</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='freq4' id='freq44'><label for='freq44'>1 fois par an ou moins</label>
</h5>
<h4 data-icon='r'>Comment êtes-vous « connecté » à cette personne ?</h4>
<h5 class='nobold color0'>
Ses coordonnées sont dans votre carnet dadresse<br>
&nbsp&nbsp&nbsp<input type='radio' name='connect1' id='connect11'><label for='connect11'>Oui</label>
&nbsp&nbsp&nbsp<input type='radio' name='connect1' id='connect12' checked><label for='connect12'>Non</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect1' id='connect11'><label for='connect11'>Oui</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect1' id='connect12' checked><label for='connect12'>Non</label>
</h5>
<h5 class='nobold color0'>
Son numéro de mobile est enregistré sur votre mobile (ou vous-mêmes êtes sur le sien)<br>
&nbsp&nbsp&nbsp<input type='radio' name='connect2' id='connect21'><label for='connect21'>Oui</label>
&nbsp&nbsp&nbsp<input type='radio' name='connect2' id='connect22' checked><label for='connect22'>Non</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect2' id='connect21'><label for='connect21'>Oui</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect2' id='connect22' checked><label for='connect22'>Non</label>
</h5>
<h5 class='nobold color0'>
Elle figure parmi vos amis facebook<br>
&nbsp&nbsp&nbsp<input type='radio' name='connect3' id='connect31'><label for='connect31'>Oui</label>
&nbsp&nbsp&nbsp<input type='radio' name='connect3' id='connect32' checked><label for='connect32'>Non</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect3' id='connect31'><label for='connect31'>Oui</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect3' id='connect32' checked><label for='connect32'>Non</label>
</h5>
<h5 class='nobold color0'>
Elle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif régulièrement<br>
&nbsp&nbsp&nbsp<input type='radio' name='connect4' id='connect41'><label for='connect41'>Oui</label>
&nbsp&nbsp&nbsp<input type='radio' name='connect4' id='connect42' checked><label for='connect42'>Non</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect4' id='connect41'><label for='connect41'>Oui</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect4' id='connect42' checked><label for='connect42'>Non</label>
</h5>
<h5 class='nobold color0'>
Vous le suivez sur Twitter<br>
&nbsp&nbsp&nbsp<input type='radio' name='connect5' id='connect51'><label for='connect51'>Oui</label>
&nbsp&nbsp&nbsp<input type='radio' name='connect5' id='connect52' checked><label for='connect52'>Non</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect5' id='connect51'><label for='connect51'>Oui</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect5' id='connect52' checked><label for='connect52'>Non</label>
</h5>
<h5 class='nobold color0'>
Vous communiquez avec cette personne sur Twitter<br>
&nbsp&nbsp&nbsp<input type='radio' name='connect6' id='connect61'><label for='connect61'>Oui</label>
&nbsp&nbsp&nbsp<input type='radio' name='connect6' id='connect62' checked><label for='connect62'>Non</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect6' id='connect61'><label for='connect61'>Oui</label>
&nbsp;&nbsp;&nbsp;<input type='radio' name='connect6' id='connect62' checked><label for='connect62'>Non</label>
</h5>
<h5 class='nobold color0'>

16
view/js/input-min.js vendored
View File

@ -1,9 +1,7 @@
function updateListener(a,b,c){a.removeEventListener(b,c);a.addEventListener(b,c)}
var ic=new inputChecker,FormDeflaterP={tags:["input"],attr:["data-name"]},importCallLog=$('input#call_log-import[type="file"]'),addContact=$("h4.add-contact"),contactContainer=$("article.contact-panel"),addFiche=$("h4.add-mini-fiche"),miniFicheContainer=$("article.mini-relation-panel"),addFiche=$("h4.add-fiche"),ficheContainer=$("article.relation-panel"),subjectInput={number:$('article.subject-panel [data-name="number"]'),username:$('article.subject-panel [data-name="username"]'),firstname:$('article.subject-panel [data-name="firstname"]'),
lastname:$('article.subject-panel [data-name="lastname"]'),store:$('article.subject-panel [data-name="submit"]')};lsi.createDataset("subject");
function storeSubject(){console.log("storing subject");var a=0<subjectInput.number.value.length,a=a&&0<subjectInput.username.value.length+subjectInput.firstname.value.length+subjectInput.lastname.value.length;if(!a)return!1;lsi.set("subject","form",{number:subjectInput.number.value,username:subjectInput.username.value,firstname:subjectInput.firstname.value,lastname:subjectInput.lastname.value})}
function restoreSubject(){var a=lsi.get("subject","form");console.log(a);null!=a&&(subjectInput.number.value=a.number,subjectInput.username.value=a.username,subjectInput.firstname.value=a.firstname,subjectInput.lastname.value=a.lastname)}restoreSubject();subjectInput.store.addEventListener("click",storeSubject,!1);lsi.createDataset("contacts");
function storeContacts(){console.log("storing all forms");for(var a=$$("article.contact-panel .new-contact"),b=0;b<a.length;b++){var c=a[b].parentNode.children.indexOf(a[b]),d=(new FormDeflater(a[b],["input"],["data-name"])).deflate(),e=0<d.number.value.length;(e=e&&0<d.username.value.length+d.firstname.value.length+d.lastname.value.length)&&lsi.set("contacts","form"+c,{number:d.number.value,username:d.username.value,firstname:d.firstname.value,lastname:d.lastname.value})}restoreContacts()}
function addNewContact(a,b,c,d){contactContainer.innerHTML+=contactBuilder.build({number:"string"!=typeof a?"":a,username:"string"!=typeof b?"":b,firstname:"string"!=typeof c?"":c,lastname:"string"!=typeof d?"":d});a=$$('article.contact-panel .new-contact input[type="submit"]');for(b=0;b<a.length;b++)updateListener(a[b],"click",storeContacts)}
function restoreContacts(){var a=lsi.keys("contacts");contactContainer.innerHTML="";for(var b=0;b<a.length;b++){var c=lsi.get("contacts",a[b]);addNewContact(c.number,c.username,c.firstname,c.lastname)}addNewContact();a=$$('article.contact-panel .new-contact input[type="submit"]');for(b=0;b<a.length;b++)updateListener(a[b],"click",storeContacts)}restoreContacts();addContact.addEventListener("click",storeContacts,!1);var miniFicheUID=0;
function addNewMiniFiche(a,b,c){miniFicheContainer.innerHTML+=miniFicheBuilder.build({firstname:"string"!=typeof a?"":a,lastname:"string"!=typeof b?"":b,username:"string"!=typeof c?"":c,uid:miniFicheUID});miniFicheUID++}importCallLog.addEventListener("change",function(a){api.send({path:"upload/call_log",file:importCallLog.files[0]},function(a){console.log(a);0==a.ModuleError&&importCallLog.addClass("active")})},!1);
function updateListener(b,c,a){b.removeEventListener(c,a);b.addEventListener(c,a)}
var ic=new inputChecker,FormDeflaterP={tags:["input"],attr:["data-name"]},importCallLog=$('input#call_log-import[type="file"]'),addContact=$("h4.add-contact"),contactContainer=$("article.contact-panel"),miniFicheContainer=$("article.mini-relation-panel"),ficheContainer=$("article.relation-panel"),subjectInput={number:$('article.subject-panel [data-name="number"]'),username:$('article.subject-panel [data-name="username"]'),firstname:$('article.subject-panel [data-name="firstname"]'),lastname:$('article.subject-panel [data-name="lastname"]'),
store:$('article.subject-panel [data-name="submit"]')};lsi.createDataset("subject");function storeSubject(){console.log("storing subject");var b=0<subjectInput.number.value.length,b=b&&0<subjectInput.username.value.length+subjectInput.firstname.value.length+subjectInput.lastname.value.length;if(!b)return!1;lsi.set("subject","form",{number:subjectInput.number.value,username:subjectInput.username.value,firstname:subjectInput.firstname.value,lastname:subjectInput.lastname.value})}
function restoreSubject(){var b=lsi.get("subject","form");null!=b&&(subjectInput.number.value=b.number,subjectInput.username.value=b.username,subjectInput.firstname.value=b.firstname,subjectInput.lastname.value=b.lastname)}restoreSubject();subjectInput.store.addEventListener("click",storeSubject,!1);var contactManager;include("/js/includes/input-phone-contact.js",function(){contactManager=new inputPhoneContact(contactContainer,addContact);contactManager.attach()});lsi.createDataset("mini-fiches");
function storeMiniFiches(){console.log("STORING ALL MINI-FICHES");for(var b=$$("article.mini-relation-panel .mini-fiche-relation "),c=0;c<b.length;c++){var a=(new FormDeflater(b[c],["input","select"],["data-name"])).deflate(),d=lsi.get("mini-fiches","form"+a.uid.value);console.log("deflated");console.log(a);!1===d&&(d.username="inconnu",d.firstname="inconnu",d.lastname="inconnu");a={uid:a.uid.value,firstname:d.firstname,lastname:d.lastname,username:d.username,sexe:[a.sexe[0].status,a.sexe[1].status],
age:a.age.value,job:a.job.value,location:[a.loc[0].status,a.loc[1].status,a.loc[2].status,a.loc[3].status]};lsi.set("mini-fiches","form"+a.uid,a)}restoreMiniFiches()}function addNewMiniFiche(b,c,a,d,h,f,g,e){miniFicheContainer.innerHTML+=miniFicheBuilder.build({firstname:b,lastname:c,username:a,uid:d,age:"",sexe_A:f[0]?"true":"false",sexe_B:f[1]?"true":"false",job:g,loc_A:e[0]?"true":"false",loc_B:e[1]?"true":"false",loc_C:e[2]?"true":"false",loc_D:e[3]?"true":"false"})}
function restoreMiniFiches(){var b=lsi.keys("mini-fiches");miniFicheContainer.innerHTML="";for(var c=0;c<b.length;c++){var a=lsi.get("mini-fiches",b[c]);addNewMiniFiche(a.firstname,a.lastname,a.username,a.uid,a.age,a.sexe,a.job,a.location)}}restoreMiniFiches();importCallLog.addEventListener("change",function(b){api.send({path:"upload/call_log",file:importCallLog.files[0]},function(b){console.log(b);0==b.ModuleError&&importCallLog.addClass("active")})},!1);

View File

@ -63,14 +63,10 @@ var addContact = $('h4.add-contact');
/* (3) Conteneur des formulaires de contact */
var contactContainer = $('article.contact-panel');
/* (4) Bouton d'ajout de MINI fiche */
var addFiche = $('h4.add-mini-fiche');
/* (5) Conteneur des MINI fiches relation */
/* (4) Conteneur des MINI fiches relation */
var miniFicheContainer = $('article.mini-relation-panel');
/* (6) Bouton d'ajout de fiche */
var addFiche = $('h4.add-fiche');
/* (7) Conteneur des fiches relation */
/* (5) Conteneur des fiches relation */
var ficheContainer = $('article.relation-panel');
@ -132,7 +128,6 @@ function storeSubject(){
function restoreSubject(){
// {1} On récupère les informations du sujet //
var subjectData = lsi.get('subject', 'form');
console.log(subjectData);
if( subjectData == null ) return;
@ -156,144 +151,296 @@ subjectInput.store.addEventListener('click', storeSubject, false);
var contactManager;
/* [4] Gestion des formulaires de contact
=========================================================*/
include('/js/includes/input-phone-contact.js', function(){
/* (1) On crée une instance du gestionnaire des CONTACTS */
contactManager = new inputPhoneContact(
contactContainer,
addContact
);
/* (2) On le démarre */
contactManager.attach();
});
/* (1) Gestion de l'enregistrement des contacts en local ('localStorage') */
lsi.createDataset('contacts');
function storeContacts(){
console.log('storing all forms');
// lsi.createDataset('contacts');
// function storeContacts(){
// console.log('STORING ALL CONTACTS');
//
// // {1} Pour chaque formulaire de contact présent //
// var existingContacts = $$('article.contact-panel .new-contact');
// for( var i = 0 ; i < existingContacts.length ; i++ ){
//
// // {2} On récupère les informations relatives à l'élément courant //
// var indexInParent = existingContacts[i].parentNode.children.indexOf(existingContacts[i]);
//
// // {3} On initialise notre deflater pour récupérer les valeurs //
// var deflater = new FormDeflater(existingContacts[i], ['input'], ['data-name']);
//
// // {4} On enregistre ce contact si le numéro n'est pas vide et soit pseudo/prénom/nom //
// var deflated = deflater.deflate();
//
// // Le numéro n'est pas vide
// var validForm = deflated.number.value.length > 0;
// // ET le pseudo et/ou le prénom et/ou le nom n'est pas vide
// validForm = validForm && deflated.username.value.length+deflated.firstname.value.length+deflated.lastname.value.length > 0;
//
// // Si le formulaire n'est pas valide, on ne l'enregistre pas
// if( !validForm ) continue;
//
// // {5} On récupère et met en forme les valeurs du deflater //
// var obj = {
// number: deflated.number.value,
// username: deflated.username.value,
// firstname: deflated.firstname.value,
// lastname: deflated.lastname.value
// };
//
// // {6} On enregistre les données dans le 'localStorage' //
// lsi.set('contacts', 'form'+indexInParent, obj);
//
//
//
// // {7} On enregistre les données des MINI fiches associées //
// var associatedMiniFiche = lsi.get('mini-fiches', 'form'+indexInParent);
//
// // Si n'existe pas, on la crée
// if( associatedMiniFiche === false ){
// lsi.set('mini-fiches', 'form'+indexInParent, {
// uid: indexInParent,
// firstname: obj.firstname,
// lastname: obj.lastname,
// username: obj.username,
// age: '',
// sexe: [true, false],
// job: '.',
// location: [true, false, false, false]
// });
//
// // Sinon, on met à jour
// }else{
//
// associatedMiniFiche.firstname = obj.firstname;
// associatedMiniFiche.lastname = obj.lastname;
// associatedMiniFiche.username = obj.username;
//
// lsi.set('mini-fiches', 'form'+indexInParent, associatedMiniFiche);
// }
//
// }
//
// // {8} On met à jour les mini-fiches //
// storeMiniFiches();
//
//
// // {9} On met à jour le rendu des contacts//
// restoreContacts();
// }
//
//
// /* (2) Fonction pour l'ajout d'un contact */
// function addNewContact(number, username, firstname, lastname){
// // {1} On ajoute le HTML //
// contactContainer.innerHTML += contactBuilder.build({
// number: (typeof number != 'string') ? '' : number,
// username: (typeof username != 'string') ? '' : username,
// firstname: (typeof firstname != 'string') ? '' : firstname,
// lastname: (typeof lastname != 'string') ? '' : lastname
// });
//
// // {2} On attache les évènements sur les boutons 'Enregistrer' //
// var contactSubmits = $$('article.contact-panel .new-contact input[type="submit"]');
// for( var i = 0 ; i < contactSubmits.length ; i++ )
// updateListener(contactSubmits[i], 'click', storeContacts);
//
// }
//
//
// /* (3) Gestion de l'affichage (et mise à jour) des contacts (depuis 'localStorage') */
// function restoreContacts(){
// // {1} Pour chaque contact du 'localStorage' //
// var existingContacts = lsi.keys('contacts');
//
// // On réinitialise le HTML
// contactContainer.innerHTML = '';
//
// for( var i = 0 ; i < existingContacts.length ; i++ ){
// // {2} On récupère les informations du contact //
// var contactData = lsi.get('contacts', existingContacts[i]);
//
// // {3} On ajoute un contact à la liste //
// addNewContact(
// contactData.number,
// contactData.username,
// contactData.firstname,
// contactData.lastname
// );
//
// }
//
// addNewContact('', '', '', '');
//
// // {4} On met à jour les MINI fiches //
// storeMiniFiches();
//
// }
//
//
// /* (n) On attache l'évènement d'ajout d'un formulaire de contact */
// addContact.addEventListener('click', storeContacts, false);
/* [5] Gestion des MINI fiches relation
=========================================================*/
/* (1) Gestion de l'enregistrement des contacts en local ('localStorage') */
lsi.createDataset('mini-fiches');
function storeMiniFiches(){
console.log('STORING ALL MINI-FICHES');
// {1} Pour chaque formulaire de contact présent //
var existingContacts = $$('article.contact-panel .new-contact');
for( var i = 0 ; i < existingContacts.length ; i++ ){
var existingMiniFiches = $$('article.mini-relation-panel .mini-fiche-relation ');
for( var i = 0 ; i < existingMiniFiches.length ; i++ ){
// {2} On récupère les informations relatives à l'élément courant //
var indexInParent = existingContacts[i].parentNode.children.indexOf(existingContacts[i]);
// {2} On initialise notre deflater pour récupérer les valeurs //
var deflater = new FormDeflater(existingMiniFiches[i], ['input', 'select'], ['data-name']);
// {3} On initialise notre deflater pour récupérer les valeurs //
var deflater = new FormDeflater(existingContacts[i], ['input'], ['data-name']);
// {4} On enregistre ce contact si le numéro n'est pas vide et soit pseudo/prénom/nom //
// {3} On enregistre ce contact si le numéro n'est pas vide et soit pseudo/prénom/nom //
var deflated = deflater.deflate();
// Le numéro n'est pas vide
var validForm = deflated.number.value.length > 0;
// ET le pseudo et/ou le prénom et/ou le nom n'est pas vide
validForm = validForm && deflated.username.value.length+deflated.firstname.value.length+deflated.lastname.value.length > 0;
// TODO: Condition pour que le formulaire soit valide
var validForm = true;
// Si le formulaire n'est pas valide, on ne l'enregistre pas
if( !validForm ) continue;
// {4} On récupère les données du LSI si elles existent //
var existingData = lsi.get('mini-fiches', 'form'+deflated.uid.value);
console.log('deflated');
console.log(deflated);
// 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 = {
number: deflated.number.value,
username: deflated.username.value,
firstname: deflated.firstname.value,
lastname: deflated.lastname.value
uid: deflated.uid.value,
firstname: existingData.firstname,
lastname: existingData.lastname,
username: existingData.username,
sexe: [
deflated.sexe[0].status, // VRAI SI HOMME
deflated.sexe[1].status // VRAI SI FEMME
],
age: deflated.age.value,
job: deflated.job.value,
location: [
deflated.loc[0].status, // VRAI si choix 1
deflated.loc[1].status, // VRAI si choix 2
deflated.loc[2].status, // VRAI si choix 3
deflated.loc[3].status // VRAI si choix 4
]
};
// {6} On enregistre les données dans le 'localStorage' //
lsi.set('contacts', 'form'+indexInParent, obj);
lsi.set('mini-fiches', 'form'+obj.uid, obj);
}
// {7} On met à jour le rendu //
restoreContacts();
restoreMiniFiches();
}
/* (2) Fonction pour l'ajout d'un contact */
function addNewContact(number, username, firstname, lastname){
// {1} On ajoute le HTML //
contactContainer.innerHTML += contactBuilder.build({
number: (typeof number != 'string') ? '' : number,
username: (typeof username != 'string') ? '' : username,
firstname: (typeof firstname != 'string') ? '' : firstname,
lastname: (typeof lastname != 'string') ? '' : lastname
});
// {2} On attache les évènements sur les boutons 'Enregistrer' //
var contactSubmits = $$('article.contact-panel .new-contact input[type="submit"]');
for( var i = 0 ; i < contactSubmits.length ; i++ )
updateListener(contactSubmits[i], 'click', storeContacts);
/* (2) Fonction pour l'ajout d'un contact */
function addNewMiniFiche(firstname, lastname, username, uid, age, sexe, job, location){
// {1} Création physique //
miniFicheContainer.innerHTML += miniFicheBuilder.build({
firstname: firstname,
lastname: lastname,
username: username,
uid: uid,
age: '',
sexe_A: sexe[0] ? 'true' : 'false',
sexe_B: sexe[1] ? 'true' : 'false',
job: job,
loc_A: location[0] ? 'true' : 'false',
loc_B: location[1] ? 'true' : 'false',
loc_C: location[2] ? 'true' : 'false',
loc_D: location[3] ? 'true' : 'false'
});
}
/* (3) Gestion de l'affichage (et mise à jour) des contacts (depuis 'localStorage') */
function restoreContacts(){
function restoreMiniFiches(){
// {1} Pour chaque contact du 'localStorage' //
var existingContacts = lsi.keys('contacts');
var existingMiniFiches = lsi.keys('mini-fiches');
// On réinitialise le HTML
contactContainer.innerHTML = '';
miniFicheContainer.innerHTML = '';
for( var i = 0 ; i < existingContacts.length ; i++ ){
for( var i = 0 ; i < existingMiniFiches.length ; i++ ){
// {2} On récupère les informations du contact //
var contactData = lsi.get('contacts', existingContacts[i]);
var ficheData = lsi.get('mini-fiches', existingMiniFiches[i]);
// {3} On ajoute un contact à la liste //
addNewContact(
contactData.number,
contactData.username,
contactData.firstname,
contactData.lastname
addNewMiniFiche(
ficheData.firstname,
ficheData.lastname,
ficheData.username,
ficheData.uid,
ficheData.age,
ficheData.sexe,
ficheData.job,
ficheData.location
);
}
addNewContact();
// {4} On met à jour les listeners de chaque formulaire //
var contactSubmits = $$('article.contact-panel .new-contact input[type="submit"]');
for( var i = 0 ; i < contactSubmits.length ; i++ )
updateListener(contactSubmits[i], 'click', storeContacts);
}restoreContacts();
/* (n) On attache l'évènement d'ajout d'un formulaire de contact */
addContact.addEventListener('click', storeContacts, false);
}restoreMiniFiches();
// TODO : Gestion des MINI fiches relation en fonction des contacts
/* (1) Fonction pour l'ajout d'une MINI fiche relation */
/* [5] Gestion des fiches relation
=========================================================*/
// TODO : Gestion des fiches relation en fonction des contacts
/* (1) Fonction pour l'ajout d'un contact */
var miniFicheUID = 0;
function addNewMiniFiche(firstname, lastname, username){
miniFicheContainer.innerHTML += miniFicheBuilder.build({
firstname: (typeof firstname != 'string') ? '' : firstname,
lastname: (typeof lastname != 'string') ? '' : lastname,
username: (typeof username != 'string') ? '' : username,
uid: miniFicheUID
});
miniFicheUID++;
}
// On ajoute la première
// addNewFiche();