Design (scss) + gestion pour `input.phone` de la matrice en 'couples'au lieu d'une 'matrice'

This commit is contained in:
xdrm-brackets 2016-10-22 16:05:11 +02:00
parent 83e7e18600
commit 4675fbb719
18 changed files with 216 additions and 146 deletions

View File

@ -80,7 +80,6 @@
content: ''; content: '';
display: inline-block; display: inline-block;
position: relative; position: relative;
top: .1em;
left: -.8em; left: -.8em;
width: calc( 1em - 2*.15em ); width: calc( 1em - 2*.15em );
height: calc( 1em - 2*.15em ); height: calc( 1em - 2*.15em );

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

File diff suppressed because one or more lines are too long

View File

@ -18,7 +18,6 @@
& > td{ & > td{
padding: .8em; padding: .8em;
color: #888; color: #888;
font-weight: normal; font-weight: normal;
text-align: center; text-align: center;
@ -33,7 +32,6 @@
& > td.hidden:before{ & > td.hidden:before{
content: '+'; content: '+';
color: #ddd; color: #ddd;
font-weight: bold;
} }
} }

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

File diff suppressed because one or more lines are too long

View File

@ -479,45 +479,79 @@
} }
/* (14) Switch entre Nom et Prénom */ div.matrice{
& span.switch-both{
display: inline-block;
position: relative;
width: 1em;
height: 1em;
margin-right: 15px; input[type='checkbox']{
display: none;
}
background: url('/src/static/container/switch-both@4e4e50.svg') center center no-repeat; input[type='checkbox'] + label.matrice-content{
background-size: 1em auto; display: table;
position: relative;
margin: .5em 0;
padding: 1em;
font-size: .8em; border-radius: 3px;
border: 1px solid #ddd;
background: #fff;
color: #555;
font-size: 1.1em;
@include transition( all .2s ease-in-out );
cursor: pointer;
font-style: italic;
// REMOVE DEFAULT STYLE
padding-left: 2em;
&:before{
// content: '';
// display: inline-block;
// position: relative;
// top: .1em;
// left: -.8em;
// width: calc( 1em - 2*.15em );
// height: calc( 1em - 2*.15em );
border-radius: 50% / 50%;
border: 0;
background: #aaa;
cursor: pointer;
}
&:hover{ text-decoration: none; }
span{
color: #000;
font-style: normal;
}
&:hover{
border-color: darken(#e2e2e2, 15);
background-color: darken(#fff, 5);
}
}
input[type='checkbox']:checked + label{
border-color: #07ca64;
&:before{
background: #07ca64;
}
&:hover{
border-color: darken(#07ca64, 15);
background-color: lighten(#07ca64, 50);
}
}
cursor: pointer;
} }
/* (15) Switch Prénom+Nom = Pseudo */
& span.switch-left{
display: inline-block;
position: relative;
width: 1em;
height: 1em;
margin-right: 15px;
background: url('/src/static/container/switch-left@4e4e50.svg') center center no-repeat;
background-size: 1em auto;
font-size: .8em;
cursor: pointer;
}

View File

@ -22,12 +22,11 @@ inputPhoneMatrice.prototype.fieldsToStorage = function(){
// {2} On extrait les données // // {2} On extrait les données //
var deflated = deflater.deflate(); var deflated = deflater.deflate();
// On crée le hash // On crée le hash
var deflatedHash = crc32(JSON.stringify(deflated)); var deflatedHash = crc32(JSON.stringify(deflated));
// console.log(deflated);
/* (3) On crée l'objet et on le remplit avec les relations */ /* (3) On crée l'objet et on le remplit avec les relations */
var obj = {}; var obj = {};
@ -44,7 +43,7 @@ inputPhoneMatrice.prototype.fieldsToStorage = function(){
obj[i].push( parseInt(deflated[i][O]) ); obj[i].push( parseInt(deflated[i][O]) );
} }
// {2} Si il n'y O qu'un sujet // // {2} Si il n'y qu'un sujet //
}else if( deflated[i] !== null ){ }else if( deflated[i] !== null ){
if( obj[i] == null ) if( obj[i] == null )
obj[i] = []; obj[i] = [];
@ -100,53 +99,38 @@ inputPhoneMatrice.prototype.storageToFields = function(){
/* (2) On construit le HTML de la matrice */ /* (2) On construit le HTML de la matrice */
// Contiendra le HTML // Contiendra le HTML
var matrice_html = ["<table class='line'>"]; var matrice_html = ["<div class='line matrice'>"];
var conA, conB, L, Ll, C, Cl;
// {1} Pour chaque ligne // // {1} Pour chaque ligne //
for( var L = 0 ; L < contacts.length ; L++ ){ for( L = 0, Ll = contacts.length ; L < Ll ; L++ ){
var conA = contactData[L]; conA = contactData[L];
matrice_html.push( '<tr>' );
if( L > 0 ){ // Noms sur la première ligne (abscisses)
matrice_html.push( '<td style="text-align: right;">' );
matrice_html.push( !isNaN(conA.existing) ? lsi.get('p_friends', conA.existing).name : conA.username );
matrice_html.push( '</td>' );
}else // Sinon,
matrice_html.push( '<td></td>' );
// {2} Pour chaque case // // {2} Pour chaque case //
for( var C = 0 ; C < contacts.length ; C++ ){ if( C < contacts.length-1 ){ for( C = L+1, Cl = contacts.length ; C < Cl ; C++ ){
var conC = contactData[C]; conB = contactData[C];
// {3} Première colonne -> Intitulé des ordonnées // // {3} Insertion //
if( L == 0 ){ matrice_html.push( "<input type='checkbox' data-name='"+conA.uid+"' value='"+conB.uid+"' id='f_matrice_"+conA.uid+"_"+conB.uid+"'" );
matrice_html.push( '<td>' );
matrice_html.push( '<span style="writing-mode: vertical-lr; text-align: right;">' );
matrice_html.push( !isNaN(conC.existing) ? lsi.get('p_friends', conC.existing).name : conC.username );
matrice_html.push( '</span>' );
// {4} Valeurs des relations (boutons) // // Si lien actif, on le restitue
}else if( C < L ){ if( matriceData.hasOwnProperty(conA.uid) && matriceData[conA.uid].indexOf(conB.uid) > -1 )
matrice_html.push( "<td>" ); matrice_html.push( "checked='checked'");
matrice_html.push( "<input type='checkbox' name='matrice_"+conA.uid+"_"+conC.uid+"' data-name='"+conA.uid+"' value='"+conC.uid+"' id='p_matrice_"+conA.uid+"_"+conC.uid+"'" );
// Si la relation existe, on active le bouton
if( matriceData[L] != null && matriceData[L].indexOf(C) > -1 )
matrice_html.push( " checked" );
matrice_html.push( " >" );
matrice_html.push( "<label for='p_matrice_"+conA.uid+"_"+conC.uid+"'></label>" );
// {5} Cases vides (moitié supérieure droite) // matrice_html.push( ">" );
}else
matrice_html.push( "<td class='hidden'>" );
matrice_html.push( '</td>' ); matrice_html.push( "<label class='matrice-content' for='f_matrice_"+conA.uid+"_"+conB.uid+"'>")
}} matrice_html.push( "Est-ce que <span>" );
matrice_html.push( !isNaN(conA.existing) ? lsi.get('p_friends', conA.existing).name : conA.username );
matrice_html.push( '</span> et <span>' );
matrice_html.push( !isNaN(conB.existing) ? lsi.get('p_friends', conB.existing).name : conB.username );
matrice_html.push( '</span> se connaissant ?' );
matrice_html.push( "</label>" );
}
matrice_html.push( '</tr>' );
} }
matrice_html.push( '</table>' ); matrice_html.push( '</div>' );
/* (3) On affiche la matrice */ /* (3) On affiche la matrice */

View File

@ -1,6 +1,6 @@
var inputPhoneMatrice=function(a){this.container=a};inputPhoneMatrice.prototype={container:this.container}; var inputPhoneMatrice=function(a){this.container=a};inputPhoneMatrice.prototype={container:this.container};
inputPhoneMatrice.prototype.fieldsToStorage=function(){console.group("[phone.matrice] fields to storage");var a=(new FormDeflater(this.container,["input"],["data-name"])).deflate();crc32(JSON.stringify(a));var c={},b;for(b in a)if(a[b]instanceof Array)for(var e in a[b])null==c[b]&&(c[b]=[]),c[b].push(parseInt(a[b][e]));else null!==a[b]&&(null==c[b]&&(c[b]=[]),c[b].push(parseInt(a[b])));lsi.set("p_matrice",0,c);console.groupEnd()}; inputPhoneMatrice.prototype.fieldsToStorage=function(){console.group("[phone.matrice] fields to storage");var a=(new FormDeflater(this.container,["input"],["data-name"])).deflate();crc32(JSON.stringify(a));var c={},b;for(b in a)if(a[b]instanceof Array)for(var e in a[b])null==c[b]&&(c[b]=[]),c[b].push(parseInt(a[b][e]));else null!==a[b]&&(null==c[b]&&(c[b]=[]),c[b].push(parseInt(a[b])));lsi.set("p_matrice",0,c);console.groupEnd()};
inputPhoneMatrice.prototype.storageToFields=function(){console.group("[phone.matrice] storage to fields");var a=lsi["export"]("p_fiches"),c=lsi.get("p_matrice",0),b=lsi["export"]("p_contacts"),e=[],d;for(d in a)-1==e.indexOf(a[d].contact)&&e.push(a[d].contact);a=["<table class='line'>"];for(d=0;d<e.length;d++){var f=b[d];a.push("<tr>");0<d?(a.push('<td style="text-align: right;">'),a.push(isNaN(f.existing)?f.username:lsi.get("p_friends",f.existing).name),a.push("</td>")):a.push("<td></td>");for(var h= inputPhoneMatrice.prototype.storageToFields=function(){console.group("[phone.matrice] storage to fields");var a=lsi["export"]("p_fiches"),c=lsi.get("p_matrice",0),b=lsi["export"]("p_contacts"),e=[],d;for(d in a)-1==e.indexOf(a[d].contact)&&e.push(a[d].contact);var a=["<div class='line matrice'>"],f,g,k,h,l;g=0;for(k=e.length;g<k;g++)for(d=b[g],h=g+1,l=e.length;h<l;h++)f=b[h],a.push("<input type='checkbox' data-name='"+d.uid+"' value='"+f.uid+"' id='f_matrice_"+d.uid+"_"+f.uid+"'"),c.hasOwnProperty(d.uid)&&
0;h<e.length;h++)if(h<e.length-1){var g=b[h];0==d?(a.push("<td>"),a.push('<span style="writing-mode: vertical-lr; text-align: right;">'),a.push(isNaN(g.existing)?g.username:lsi.get("p_friends",g.existing).name),a.push("</span>")):h<d?(a.push("<td>"),a.push("<input type='checkbox' name='matrice_"+f.uid+"_"+g.uid+"' data-name='"+f.uid+"' value='"+g.uid+"' id='p_matrice_"+f.uid+"_"+g.uid+"'"),null!=c[d]&&-1<c[d].indexOf(h)&&a.push(" checked"),a.push(" >"),a.push("<label for='p_matrice_"+f.uid+"_"+g.uid+ -1<c[d.uid].indexOf(f.uid)&&a.push("checked='checked'"),a.push(">"),a.push("<label class='matrice-content' for='f_matrice_"+d.uid+"_"+f.uid+"'>"),a.push("Est-ce que <span>"),a.push(isNaN(d.existing)?d.username:lsi.get("p_friends",d.existing).name),a.push("</span> et <span>"),a.push(isNaN(f.existing)?f.username:lsi.get("p_friends",f.existing).name),a.push("</span> se connaissant ?"),a.push("</label>");a.push("</div>");this.container.innerHTML=a.join("");console.groupEnd()};
"'></label>")):a.push("<td class='hidden'>");a.push("</td>")}a.push("</tr>")}a.push("</table>");this.container.innerHTML=a.join("");console.groupEnd()};inputPhoneMatrice.prototype.attach=function(){console.group("[phone.matrice] attaching events");lsi.createDataset("p_matrice");this.storageToFields();var a=this;this.container.addEventListener("click",function(c){a.fieldsToStorage();setTimeout(function(){a.storageToFields()},500)},!1);console.groupEnd()}; inputPhoneMatrice.prototype.attach=function(){console.group("[phone.matrice] attaching events");lsi.createDataset("p_matrice");this.storageToFields();var a=this;this.container.addEventListener("click",function(c){a.fieldsToStorage();setTimeout(function(){a.storageToFields()},500)},!1);console.groupEnd()};
inputPhoneMatrice.prototype.parseGrid=function(){var a=$$(".matrice-panel input[data-name][value]"),c;for(c in a)if(a[c]instanceof Element){var b=a[c].getData("name"),e=a[c].value;this.sGrid[b]instanceof Array||(this.sGrid[b]=[]);this.sGrid[b][e]=a[c]}}; inputPhoneMatrice.prototype.parseGrid=function(){var a=$$(".matrice-panel input[data-name][value]"),c;for(c in a)if(a[c]instanceof Element){var b=a[c].getData("name"),e=a[c].value;this.sGrid[b]instanceof Array||(this.sGrid[b]=[]);this.sGrid[b][e]=a[c]}};

View File

@ -178,7 +178,6 @@ var phoneRoutine = function(){
lsi.clear('p_matrice'); lsi.clear('p_matrice');
lsi.clear('p_friends'); lsi.clear('p_friends');
/* (2) On met à jour l'affichage */ /* (2) On met à jour l'affichage */
pSubjectManager.storageToFields(); pSubjectManager.storageToFields();
pContactManager.storageToFields(); pContactManager.storageToFields();