Vérification complète des `fiches relation` (code couleur sur les liens de pages).

This commit is contained in:
xdrm-brackets 2016-04-27 18:32:44 +02:00
parent 0b314b5f23
commit 83ab5702ec
6 changed files with 115 additions and 98 deletions

View File

@ -1,7 +1,7 @@
function inputPhoneFiche(a,c){this.container=a;this.nav_container=c}
inputPhoneFiche.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null,defaultData:{firstname:"",lastname:"",username:"",sexe:[{status:!0},{status:!1}],age:"",job:".",famsit:[{status:!0},{status:!1},{status:!1}],studies:".",reltype:[{status:!0},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1}],reltypeSpecial:"",city:"",loc:[{status:!0},{status:!1},{status:!1},{status:!1}],duration:["",""],context:[{status:!0},{status:!1},
{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1}],contextSpecial:["","",""],freq:[[{status:!0},{status:!1},{status:!1},{status:!1}],[{status:!0},{status:!1},{status:!1},{status:!1}],[{status:!0},{status:!1},{status:!1},{status:!1}],[{status:!0},{status:!1},{status:!1},{status:!1}],[{status:!0},{status:!1},{status:!1},{status:!1}]],connect:[[{status:!0},{status:!1}],[{status:!0},{status:!1}],[{status:!0},
{status:!1}],[{status:!0},{status:!1}],[{status:!0},{status:!1}],[{status:!0},{status:!1}]],connectSpecial:["",""]}};
{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1},{status:!1}],contextSpecial:["","",""],freq:[[{status:!0},{status:!1},{status:!1},{status:!1}],[{status:!0},{status:!1},{status:!1},{status:!1}],[{status:!0},{status:!1},{status:!1},{status:!1}],[{status:!0},{status:!1},{status:!1},{status:!1}],[{status:!0},{status:!1},{status:!1},{status:!1}]],connect:[[{status:!1},{status:!0}],[{status:!1},{status:!0}],[{status:!1},
{status:!0}],[{status:!1},{status:!0}],[{status:!1},{status:!0}],[{status:!1},{status:!0}]],connectSpecial:["",""]}};
inputPhoneFiche.prototype.fieldsToStorage=function(){console.log("FICHE: FIELDS TO STORAGE");for(var a=$$("article.relation-panel .fiche-relation"),c=0;c<a.length;c++){var b=(new FormDeflater(a[c],["input","select"],["data-name"])).deflate();console.log(b);var d=lsi.get("fiches","form"+b.uid.value);!1===d&&(d.username="inconnu",d.firstname="inconnu",d.lastname="inconnu");b={uid:b.uid.value,firstname:d.firstname,lastname:d.lastname,username:d.username,sexe:b.sexe,age:b.age.value,job:b.job.value,famsit:b.famsit,
studies:b.studies.value,reltype:b.reltype,reltypeSpecial:b.reltypeSpecial.value,city:b.city.value,loc:b.loc,duration:[b.duration[0].value,b.duration[1].value],context:b.context,contextSpecial:[b.contextSpecial[0].value,b.contextSpecial[1].value,b.contextSpecial[2].value],freq:[b.freq0,b.freq1,b.freq2,b.freq3,b.freq4],connect:[b.connect0,b.connect1,b.connect2,b.connect3,b.connect4,b.connect5],connectSpecial:[b.connectSpecial[0].value,b.connectSpecial[1].value]};lsi.set("fiches","form"+b.uid,b)}};
inputPhoneFiche.prototype.add=function(a){console.log("FICHE: ADD");if(null==a.uid)return!1;a.firstname=null!=a.firstname?a.firstname:this.defaultData.firstname;a.lastname=null!=a.lastname?a.lastname:this.defaultData.lastname;a.username=null!=a.username?a.username:this.defaultData.username;a.age=null!=a.age?a.age:this.defaultData.age;a.city=null!=a.city?a.city:this.defaultData.city;a.duration[0]=null!=a.duration[0]?a.duration[0]:this.defaultData.duration[0];a.duration[1]=null!=a.duration[1]?a.duration[1]:
@ -16,5 +16,7 @@ d[c].setAttribute("checked","checked"):d[c].removeAttribute("checked")};inputPho
inputPhoneFiche.prototype.sync=function(){console.log("FICHE: SYNC");for(var a=lsi.keys("contacts"),c=0;c<a.length&&9>c;c++){var b=lsi.get("contacts",a[c]),d=lsi.get("fiches",a[c]);null==d&&(d=this.defaultData);d.uid=b.uid;d.firstname=b.firstname;d.lastname=b.lastname;d.username=b.username;lsi.set("fiches",a[c],d)}};
inputPhoneFiche.prototype.nav=function(a){if("undefined"==typeof a||isNaN(a.innerHTML))return!1;for(var c=$$("#nav-fiche > span.active"),b=0;b<c.length;b++)c[b].remClass("active");a.addClass("active");this.selected=parseInt(a.innerHTML)-1;a=$$("article.relation-panel .fiche-relation.active");for(b=0;b<a.length;b++)a[b].remClass("active");this.container.children[this.selected].addClass("active")};
inputPhoneFiche.prototype.updateNavBar=function(a){this.nav_container.innerHTML="";for(var c=0;c<a.length;c++){var b=parseInt(a[c])+1;this.nav_container.innerHTML+="<span>"+b+"</span>"}this.check();this.nav(this.nav_container.children[this.selected])};
inputPhoneFiche.prototype.check=function(){for(var a=lsi.keys("fiches"),c=0;c<a.length;c++){var b=lsi.get("fiches",a[c]),d=!0;(d=(d=(d=(d=d&&!isNaN(parseInt(miniData.age)))&&checkRadioValue(miniData.sexe[0]))&&"."!=miniData.job)&&checkRadioValue(miniData.loc))?this.nav_container.children[b.uid].addClass("done"):this.nav_container.children[b.uid].remClass("done")}};
inputPhoneFiche.prototype.check=function(){for(var a=lsi.keys("fiches"),c=0;c<a.length;c++){var b=lsi.get("fiches",a[c]),d=!0,d=d&&!isNaN(parseInt(b.age));console.log(d);d=d&&2<=b.city.length;console.log(d);d=d&&(!isNaN(parseInt(b.duration[0]))||""==b.duration[0].length);console.log(d);d=d&&(!isNaN(parseInt(b.duration[1]))||""==b.duration[1].length);console.log(d);d=d&&0<b.duration[0].length+b.duration[1].length;console.log(d);d=d&&"."!=b.job;console.log(d);d=d&&"."!=b.studies;console.log(d);d=d&&
checkRadioValue(b.sexe);console.log(d);d=d&&checkRadioValue(b.famsit);console.log(d);d=d&&checkRadioValue(b.reltype);console.log(d);d=d&&checkRadioValue(b.loc);console.log(d);d=d&&checkRadioValue(b.context);console.log(d);for(c=0;c<b.freq.length;c++)d=d&&checkRadioValue(b.freq[c]);console.log(d);for(c=0;c<b.connect.length;c++)d=d&&checkRadioValue(b.connect[c]);console.log(d);d=d&&(!b.reltype[8].status||b.reltype[8].status&&2<=b.reltypeSpecial.length);console.log(d);(d=(d=(d=d&&(!b.context[11].status||
b.context[11].status&&2<=b.contextSpecial[0].length))&&(!b.context[12].status||b.context[12].status&&2<=b.contextSpecial[1].length))&&(!b.context[13].status||b.context[13].status&&2<=b.contextSpecial[2].length))?this.nav_container.children[b.uid].addClass("done"):this.nav_container.children[b.uid].remClass("done")}};
inputPhoneFiche.prototype.attach=function(a){console.log("FICHE: ATTACH");lsi.createDataset("fiches");this.storageToFields();this.handler=a;var c=this,c=this;this.nav_container.addEventListener("click",function(a){c.nav(a.target);c.handler()},!1)};

View File

@ -38,12 +38,12 @@ inputPhoneFiche.prototype = {
[ {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} ]],
[ {status:false}, {status:true} ],
[ {status:false}, {status:true} ],
[ {status:false}, {status:true} ],
[ {status:false}, {status:true} ],
[ {status:false}, {status:true} ],
[ {status:false}, {status:true} ]],
connectSpecial: ['', '']
}
};
@ -432,38 +432,71 @@ inputPhoneFiche.prototype.check = function(){
var ficheData = lsi.get('fiches', ficheKeys[i]);
/* (2) On vérifie le formulaire complet */
// {1} Vérification des input //
var validForm = true;
// 1. L'age est un nombre
validForm = validForm && !isNaN(parseInt(miniData.age));
// 2. Le sexe est défini
validForm = validForm && checkRadioValue(miniData.sexe[0]);
// 3. Le métier est défini
validForm = validForm && miniData.job != '.';
// 4. La distance de localisation est définie
validForm = validForm && checkRadioValue(miniData.loc);
// VALUE:
// - age
// - city
// - duration0/duration1
// - contextspecial0/1/2
// - connectspecial0/1
//
// SELECT:
// - job
// - studies
//
//
// RADIO:
// - sexe
// - famsit
// - reltype
// - loc
// - context
// - freq0/1/2/3/4
// - connect0/1/2/3/4/5
// {1} Vérification des <input> //
// 1. L'age est un nombre
validForm = validForm && !isNaN(parseInt(ficheData.age));
console.log(validForm);
// 2. La ville a au moins 2 caractères
validForm = validForm && ficheData.city.length >= 2;
console.log(validForm);
// 3. La durée de la relation en mois est vide ou un nombre
validForm = validForm && (!isNaN(parseInt(ficheData.duration[0])) || ficheData.duration[0].length == '');
console.log(validForm);
// 4. La durée de la relation en année est vide ou un nombre
validForm = validForm && (!isNaN(parseInt(ficheData.duration[1])) || ficheData.duration[1].length == '');
console.log(validForm);
// 5. Pour la durée de la relation, au moins un des 2 n'est pas vide
validForm = validForm && ficheData.duration[0].length+ficheData.duration[1].length > 0;
console.log(validForm);
// {2} Vérification des <select> //
// 6. Le <select> pour la profession n'est pas indéfini
validForm = validForm && ficheData.job != '.';
console.log(validForm);
// 7. Le <select> pour les études n'est pas indéfini
validForm = validForm && ficheData.studies != '.';
console.log(validForm);
// {3} Vérification des <input> radio //
// 8. Le SEXE a un et un seul choix
validForm = validForm && checkRadioValue(ficheData.sexe);
console.log(validForm);
// 9. La SITUATION FAMILIALE a un et un seul choix
validForm = validForm && checkRadioValue(ficheData.famsit);
console.log(validForm);
// 10. Le TYPE DE RELATION a un et un seul choix
validForm = validForm && checkRadioValue(ficheData.reltype);
console.log(validForm);
// 11. La DISTANCE DE DOMICILE (location) a un et un seul choix
validForm = validForm && checkRadioValue(ficheData.loc);
console.log(validForm);
// 12. Le CONTEXTE DE RENCONTRE a un et un seul choix
validForm = validForm && checkRadioValue(ficheData.context);
console.log(validForm);
// 13. Les FRÉQUENCES ont un et un seul choix (par question de fréquence)
for( var i = 0 ; i < ficheData.freq.length ; i++ )
validForm = validForm && checkRadioValue( ficheData.freq[i] );
console.log(validForm);
// 14. Les CONNECTION ont un et un seul choix (par question de connection)
for( var i = 0 ; i < ficheData.connect.length ; i++ )
validForm = validForm && checkRadioValue( ficheData.connect[i] );
console.log(validForm);
// {4} <input> dépendant d'un choix d'un <input> radio //
// 15. TYPE DE RELATION si autre est coché (indice 8)
validForm = validForm && (!ficheData.reltype[8].status || ficheData.reltype[8].status && ficheData.reltypeSpecial.length >= 2);
console.log(validForm);
// 16. CONTEXTE DE RELATION si est coché indice 11
validForm = validForm && (!ficheData.context[11].status || ficheData.context[11].status && ficheData.contextSpecial[0].length >= 2);
// 17. CONTEXTE DE RELATION si est coché indice 12
validForm = validForm && (!ficheData.context[12].status || ficheData.context[12].status && ficheData.contextSpecial[1].length >= 2);
// 18. CONTEXTE DE RELATION si est coché indice 13
validForm = validForm && (!ficheData.context[13].status || ficheData.context[13].status && ficheData.contextSpecial[2].length >= 2);

View File

@ -8,5 +8,5 @@ inputPhoneMini.prototype.storageToFields=function(){console.log("MINI FICHE: STO
inputPhoneMini.prototype.sync=function(){console.log("MINI FICHE: SYNC");for(var a=lsi.keys("contacts"),b=0;b<a.length;b++){var c=lsi.get("contacts",a[b]),d=lsi.get("mini-fiches",a[b]);null==d&&(d=this.defaultData);d.uid=c.uid;d.firstname=c.firstname;d.lastname=c.lastname;d.username=c.username;lsi.set("mini-fiches",a[b],d)}};
inputPhoneMini.prototype.nav=function(a){if("undefined"==typeof a||isNaN(a.innerHTML))return!1;for(var b=$$("#nav-mini > span.active"),c=0;c<b.length;c++)b[c].remClass("active");a.addClass("active");this.selected=parseInt(a.innerHTML)-1;a=$$("article.mini-relation-panel .mini-fiche-relation.active");for(c=0;c<a.length;c++)a[c].remClass("active");this.container.children[this.selected].addClass("active")};
inputPhoneMini.prototype.updateNavBar=function(a){this.nav_container.innerHTML="";for(var b=0;b<a.length;b++){var c=parseInt(a[b])+1;this.nav_container.innerHTML+="<span>"+c+"</span>"}this.check();this.nav(this.nav_container.children[this.selected])};
inputPhoneMini.prototype.check=function(){for(var a=lsi.keys("mini-fiches"),b=0;b<a.length;b++){var c=lsi.get("mini-fiches",a[b]),d=!0;(d=(d=(d=(d=d&&!isNaN(parseInt(c.age)))&&checkRadioValue(c.sexe[0]))&&"."!=c.job)&&checkRadioValue(c.loc))?this.nav_container.children[c.uid].addClass("done"):this.nav_container.children[c.uid].remClass("done")}};
inputPhoneMini.prototype.check=function(){for(var a=lsi.keys("mini-fiches"),b=0;b<a.length;b++){var c=lsi.get("mini-fiches",a[b]),d=!0;(d=(d=(d=(d=d&&!isNaN(parseInt(c.age)))&&checkRadioValue(c.sexe))&&"."!=c.job)&&checkRadioValue(c.loc))?this.nav_container.children[c.uid].addClass("done"):this.nav_container.children[c.uid].remClass("done")}};
inputPhoneMini.prototype.attach=function(a){console.log("MINI FICHE: ATTACH");lsi.createDataset("mini-fiches");this.storageToFields();this.handler=a;var b=this,b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler()},!1)};

View File

@ -311,7 +311,7 @@ inputPhoneMini.prototype.check = function(){
// 1. L'age est un nombre
validForm = validForm && !isNaN(parseInt(miniData.age));
// 2. Le sexe est défini
validForm = validForm && checkRadioValue(miniData.sexe[0]);
validForm = validForm && checkRadioValue(miniData.sexe);
// 3. Le métier est défini
validForm = validForm && miniData.job != '.';
// 4. La distance de localisation est définie

View File

@ -1,5 +1,5 @@
function updateListener(b,a,c){b.removeEventListener(a,c);b.addEventListener(a,c)}var importCallLog=$('input#call_log-import[type="file"]'),ficheContainer=$("article.relation-panel"),subjectManager,contactManager,miniManager,ficheManager;
function dynamicUpdate(){console.log("DYNAMIC UPDATE: UPDATING");miniManager.fieldsToStorage();ficheManager.fieldsToStorage();contactManager.fieldsToStorage();miniManager.sync();ficheManager.sync();miniManager.storageToFields();ficheManager.storageToFields();contactManager.storageToFields()}function checkRadioValue(b){for(var a=0,c=0;c<b.length;c++)!0===b[c].status&&a++;return 1!=a?!1:!0}
var importCallLog=$('input#call_log-import[type="file"]'),subjectManager,contactManager,miniManager,ficheManager;function dynamicUpdate(){console.log("DYNAMIC UPDATE: UPDATING");miniManager.fieldsToStorage();ficheManager.fieldsToStorage();contactManager.fieldsToStorage();miniManager.sync();ficheManager.sync();miniManager.storageToFields();ficheManager.storageToFields();contactManager.storageToFields()}
function checkRadioValue(b){for(var a=0,c=0;c<b.length;c++)!0===b[c].status&&a++;return 1!=a?!1:!0}
include("/js/includes/input-phone-subject.js",function(){include("/js/includes/input-phone-contact.js",function(){include("/js/includes/input-phone-mini.js",function(){include("/js/includes/input-phone-fiche.js",function(){subjectManager=new inputPhoneSubject($('article.subject-panel [data-name="number"]'),$('article.subject-panel [data-name="username"]'),$('article.subject-panel [data-name="firstname"]'),$('article.subject-panel [data-name="lastname"]'),$('article.subject-panel [data-name="submit"]'));
subjectManager.attach();contactManager=new inputPhoneContact($("article.contact-panel"),$("h4.add-contact"));contactManager.attach(dynamicUpdate);miniManager=new inputPhoneMini($("article.mini-relation-panel"),$("#nav-mini"));miniManager.attach(dynamicUpdate);ficheManager=new inputPhoneFiche($("article.relation-panel"),$("#nav-fiche"));ficheManager.attach(dynamicUpdate)})})})});
importCallLog.addEventListener("change",function(b){api.send({path:"upload/call_log",file:importCallLog.files[0]},function(a){console.log(a);0==a.ModuleError&&importCallLog.addClass("active")})},!1);
subjectManager.attach();contactManager=new inputPhoneContact($("article.contact-panel"),$("h4.add-contact"));contactManager.attach(dynamicUpdate);miniManager=new inputPhoneMini($("article.mini-relation-panel"),$("#nav-mini"));miniManager.attach(dynamicUpdate);ficheManager=new inputPhoneFiche($("article.relation-panel"),$("#nav-fiche"));ficheManager.attach(dynamicUpdate);importCallLog.addEventListener("change",function(b){api.send({path:"upload/call_log",file:importCallLog.files[0]},function(a){console.log(a);
0==a.ModuleError&&importCallLog.addClass("active")})},!1)})})})});

View File

@ -1,50 +1,22 @@
// STRUCTURE DU localStorage
// subject -> contient les données du sujet
// contacts -> contient les données de tous les contacts
// mini-fiches -> contient les données de toutes les mini fiches
// fiches -> contient les données de toutes les fiches
/* (3) Fonction qui met à jour un élément et son listener */
function updateListener(element, eventType, handler){
element.removeEventListener(eventType, handler);
element.addEventListener(eventType, handler);
}
/* [1] Initialisation des utilitaires et variables
=========================================================*/
/* (1) Input de type fichier pour l'import */
var importCallLog = $('input#call_log-import[type="file"]');
/* (2) Conteneur des fiches relation */
var ficheContainer = $('article.relation-panel');
/* (3) Initialisation des managers */
/* (2) Initialisation des managers */
var subjectManager;
var contactManager;
var miniManager;
var ficheManager;
/* (3) Fonctions utiles */
function dynamicUpdate(){
console.log('DYNAMIC UPDATE: UPDATING');
@ -160,6 +132,35 @@ include('/js/includes/input-phone-fiche.js', function(){
/* [6] Gestion de l'import du fichier
=========================================================*/
importCallLog.addEventListener('change', function(e){
/* (1) On rédige la requête */
var uploadRequest = {
path: 'upload/call_log',
file: importCallLog.files[0]
};
/* (2) On effectue l'upload (import) */
api.send(uploadRequest, function(response){
console.log( response );
// Si tout est bon, on met l'input en bleu
if( response.ModuleError == 0 ){
importCallLog.addClass('active');
// TODO: Gestion de l'ajout des fiches relation
}
});
}, false);
}) }) }) });
@ -187,26 +188,7 @@ include('/js/includes/input-phone-fiche.js', function(){
/* [6] Gestion de l'import du fichier
=========================================================*/
importCallLog.addEventListener('change', function(e){
/* (1) On rédige la requête */
var uploadRequest = {
path: 'upload/call_log',
file: importCallLog.files[0]
};
/* (2) On effectue l'upload (import) */
api.send(uploadRequest, function(response){
console.log( response );
// Si tout est bon, on met l'input en bleu
if( response.ModuleError == 0 )
importCallLog.addClass('active');
// TODO: Gestion de l'ajout des fiches relation
});
}, false);