Séparation du classement par `sms` et par `appel` au niveau de `call_log/unserialize`

This commit is contained in:
xdrm-brackets 2016-05-03 15:18:09 +02:00
parent 022039f0e8
commit 30e5f1fc08
4 changed files with 60 additions and 25 deletions

View File

@ -1,8 +1,8 @@
function inputPhoneContact(a,c){this.container=a;this.nav_container=c}inputPhoneContact.prototype={container:this.container,nav_container:this.nav_container,selected:1,handler:null}; function inputPhoneContact(a,b){this.container=a;this.nav_container=b}inputPhoneContact.prototype={container:this.container,nav_container:this.nav_container,selected:1,handler:null};
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 b=(new FormDeflater(a[c],["input"],["data-name"])).deflate();console.log(b);var d=0<b.number.value.length;if(d=d&&0<b.username.value.length+b.firstname.value.length+b.lastname.value.length)d={uid:parseInt(b.uid.value),number:b.number.value,username:b.username.value,firstname:b.firstname.value,lastname:b.lastname.value},d.hash= inputPhoneContact.prototype.fieldsToStorage=function(){console.log("CONTACTS: FIELDS TO STORAGE");for(var a=$$("article.contact-panel .new-contact"),b=0;b<a.length;b++){var c=(new FormDeflater(a[b],["input"],["data-name"])).deflate(),d=0<c.number.value.length;if(d=d&&0<c.username.value.length+c.firstname.value.length+c.lastname.value.length)d={uid:parseInt(c.uid.value),number:c.number.value,username:c.username.value,firstname:c.firstname.value,lastname:c.lastname.value},d.hash=crc32(JSON.stringify(d)),
crc32(JSON.stringify(d)),lsi.set("contacts",parseInt(b.uid.value),d)}}; lsi.set("contacts",parseInt(c.uid.value),d)}};
inputPhoneContact.prototype.add=function(a){console.log("CONTACTS: ADD");if(null==a.uid||"number"!=typeof a.uid)return!1;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");for(var c=this,b=0;b<a.length;b++)a[b].removeEventListener("click",function(a){c.nav(a.target);c.handler(a.target)},!1),a[b].addEventListener("click", inputPhoneContact.prototype.add=function(a){console.log("CONTACTS: ADD");if(null==a.uid||"number"!=typeof a.uid)return!1;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");for(var b=this,c=0;c<a.length;c++)a[c].removeEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1),a[c].addEventListener("click",
function(a){c.nav(a.target);c.handler(a.target)},!1)};inputPhoneContact.prototype.storageToFields=function(){console.log("CONTACTS: STORAGE TO FIELDS");var a=lsi.keys("contacts");this.container.innerHTML="";for(var c=10*(this.selected-1)+10,b=10*(this.selected-1);b<c&&b<a.length;b++)this.add(lsi.get("contacts",a[b]));c>=a.length&&this.add({uid:a.length,number:"",firstname:"",lastname:"",username:""});this.updateNavBar()}; function(a){b.nav(a.target);b.handler(a.target)},!1)};inputPhoneContact.prototype.storageToFields=function(){console.log("CONTACTS: STORAGE TO FIELDS");var a=lsi.keys("contacts");this.container.innerHTML="";for(var b=10*(this.selected-1)+10,c=10*(this.selected-1);c<b&&c<a.length;c++)this.add(lsi.get("contacts",a[c]));b>=a.length&&this.add({uid:a.length,number:"",firstname:"",lastname:"",username:""});this.updateNavBar()};
inputPhoneContact.prototype.nav=function(a){if("undefined"==typeof a||isNaN(a.innerHTML)||"nav-contact"!=a.parentNode.id)return!1;for(var c=$$("#nav-contact > span.active"),b=0;b<c.length;b++)c[b].remClass("active");a.addClass("active");this.selected=parseInt(a.innerHTML)}; inputPhoneContact.prototype.nav=function(a){if("undefined"==typeof a||isNaN(a.innerHTML)||"nav-contact"!=a.parentNode.id)return!1;for(var b=$$("#nav-contact > span.active"),c=0;c<b.length;c++)b[c].remClass("active");a.addClass("active");this.selected=parseInt(a.innerHTML)};
inputPhoneContact.prototype.updateNavBar=function(){var a=lsi.keys("contacts").length;if(this.nav_container.children.length!=a){this.nav_container.innerHTML="";for(var c=0;c<a;c+=10)this.nav_container.innerHTML+="<span>"+(1+c/10)+"</span>"}this.nav(this.nav_container.children[this.selected-1])}; inputPhoneContact.prototype.updateNavBar=function(){var a=lsi.keys("contacts").length;if(this.nav_container.children.length!=a){this.nav_container.innerHTML="";for(var b=0;b<a;b+=10)this.nav_container.innerHTML+="<span>"+(1+b/10)+"</span>"}this.nav(this.nav_container.children[this.selected-1])};
inputPhoneContact.prototype.attach=function(a){console.log("CONTACTS: ATTACH");lsi.createDataset("contacts");this.storageToFields();this.handler=a;var c=this;this.nav_container.addEventListener("click",function(a){c.nav(a.target);c.handler(a.target)},!1)}; inputPhoneContact.prototype.attach=function(a){console.log("CONTACTS: ATTACH");lsi.createDataset("contacts");this.storageToFields();this.handler=a;var b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1)};

View File

@ -29,7 +29,7 @@ inputPhoneContact.prototype.fieldsToStorage = function(){
// {3} 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(); var deflated = deflater.deflate();
console.log(deflated);
// Le numéro n'est pas vide // Le numéro n'est pas vide
var validForm = deflated.number.value.length > 0; var validForm = deflated.number.value.length > 0;
// ET le pseudo et/ou le prénom et/ou le nom n'est pas vide // ET le pseudo et/ou le prénom et/ou le nom n'est pas vide

View File

@ -98,15 +98,12 @@
array_push($phone_logs, $phone_log); array_push($phone_logs, $phone_log);
} }
/* [5] On trie les contacts par nombre d'apparition /* [5] On trie les contacts par nombre d'apparition d'APPEL
=========================================================*/ =========================================================*/
// Système de poids -> 5 sms = 1 appel
// 0 -> {number, name, calls, sms} (closest contact)
// 1 -> {number, name, calls, sms} (2nd closest contact)
$tmp = $phone_directory; // Permet de ne pas efface $phone_directory $tmp = $phone_directory; // Permet de ne pas efface $phone_directory
$maxNumber = -1; // Contiendra le numéro du plus gros $maxNumber = -1; // Contiendra le numéro du plus gros
$maxVal = null; // Contiendra la valeur max (sms+5*cal ls) $maxVal = null; // Contiendra la valeur max (total calls)
$sorted_directory = array(); // Contiendra l'annuaire trié par nombre d'interraction $call_sorted = array(); // Contiendra l'annuaire trié par nombre d'interraction
/* (1) Tant qu'on a pas tout trié */ /* (1) Tant qu'on a pas tout trié */
while( count($tmp) > 0 ){ while( count($tmp) > 0 ){
@ -115,22 +112,51 @@
/* (2) On parcours toutes les entrées puor trouver le plus proche */ /* (2) On parcours toutes les entrées puor trouver le plus proche */
foreach($tmp as $number=>$data) foreach($tmp as $number=>$data)
if( $data['sms']+5*$data['calls'] > $maxVal || is_null($maxVal) ){ if( $data['calls'] > $maxVal || is_null($maxVal) ){
// On met à jour la valeur max // On met à jour la valeur max
$maxVal = $data['sms']+5*$data['calls']; $maxVal = $data['calls'];
// On met à jour l'indice // On met à jour l'indice
$maxNumber = $number; $maxNumber = $number;
} }
/* (3) On supprime le plus proche qu'on a trouvé et on l'ajoute au tableau trié */ /* (3) On supprime le plus proche qu'on a trouvé et on l'ajoute au tableau trié */
array_push($sorted_directory, array( array_push($call_sorted, array(
'number' => $maxNumber, 'number' => $maxNumber,
'name' => $tmp[$maxNumber]['name'], 'name' => $tmp[$maxNumber]['name'],
'calls' => $tmp[$maxNumber]['calls'], 'count' => $tmp[$maxNumber]['calls']
'sms' => $tmp[$maxNumber]['sms'],
'total' => $tmp[$maxNumber]['sms'] + 5*$tmp[$maxNumber]['calls']
)); ));
unset($tmp[$maxNumber]);
}
/* [6] On trie les contacts par nombre d'apparition de SMS/MMS
=========================================================*/
$tmp = $phone_directory; // Permet de ne pas efface $phone_directory
$maxNumber = -1; // Contiendra le numéro du plus gros
$maxVal = null; // Contiendra la valeur max (total calls)
$sms_sorted = array(); // Contiendra l'annuaire trié par nombre d'interraction
/* (1) Tant qu'on a pas tout trié */
while( count($tmp) > 0 ){
$maxNumber = -1;
$maxVal = null;
/* (2) On parcours toutes les entrées puor trouver le plus proche */
foreach($tmp as $number=>$data)
if( $data['sms'] > $maxVal || is_null($maxVal) ){
// On met à jour la valeur max
$maxVal = $data['sms'];
// On met à jour l'indice
$maxNumber = $number;
}
/* (3) On supprime le plus proche qu'on a trouvé et on l'ajoute au tableau trié */
array_push($sms_sorted, array(
'number' => $maxNumber,
'name' => $tmp[$maxNumber]['name'],
'count' => $tmp[$maxNumber]['sms']
));
unset($tmp[$maxNumber]); unset($tmp[$maxNumber]);
} }
@ -139,7 +165,9 @@
=========================================================*/ =========================================================*/
return array( return array(
'ModuleError' => ManagerError::Success, 'ModuleError' => ManagerError::Success,
'directory' => $sorted_directory, 'directory' => $phone_directory,
'calls' => $call_sorted,
'sms' => $sms_sorted,
'logs' => $phone_logs 'logs' => $phone_logs
); );
} }

View File

@ -211,6 +211,13 @@ include('/js/includes/input-phone-fiche.js', function(){
/* (5) Gestion de l'import du fichier /* (5) Gestion de l'import du fichier
---------------------------------------------------------*/ ---------------------------------------------------------*/
importCallLog.addEventListener('change', function(e){ importCallLog.addEventListener('change', function(e){