Séparation du classement par `sms` et par `appel` au niveau de `call_log/unserialize`
This commit is contained in:
parent
022039f0e8
commit
30e5f1fc08
|
@ -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)};
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
$tmp = $phone_directory; // Permet de ne pas efface $phone_directory
|
||||||
// 0 -> {number, name, calls, sms} (closest contact)
|
$maxNumber = -1; // Contiendra le numéro du plus gros
|
||||||
// 1 -> {number, name, calls, sms} (2nd closest contact)
|
$maxVal = null; // Contiendra la valeur max (total calls)
|
||||||
$tmp = $phone_directory; // Permet de ne pas efface $phone_directory
|
$call_sorted = array(); // Contiendra l'annuaire trié par nombre d'interraction
|
||||||
$maxNumber = -1; // Contiendra le numéro du plus gros
|
|
||||||
$maxVal = null; // Contiendra la valeur max (sms+5*cal ls)
|
|
||||||
$sorted_directory = 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,8 +165,10 @@
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
return array(
|
return array(
|
||||||
'ModuleError' => ManagerError::Success,
|
'ModuleError' => ManagerError::Success,
|
||||||
'directory' => $sorted_directory,
|
'directory' => $phone_directory,
|
||||||
'logs' => $phone_logs
|
'calls' => $call_sorted,
|
||||||
|
'sms' => $sms_sorted,
|
||||||
|
'logs' => $phone_logs
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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){
|
||||||
|
|
Loading…
Reference in New Issue