From 30e5f1fc080daef282d9a7c82a9e862991e45359 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 3 May 2016 15:18:09 +0200 Subject: [PATCH] =?UTF-8?q?S=C3=A9paration=20du=20classement=20par=20`sms`?= =?UTF-8?q?=20et=20par=20`appel`=20au=20niveau=20de=20`call=5Flog/unserial?= =?UTF-8?q?ize`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/includes/input-phone-contact-min.js | 16 +++---- js/includes/input-phone-contact.js | 2 +- manager/module/call_log.php | 60 +++++++++++++++++++------- view/js/input.js | 7 +++ 4 files changed, 60 insertions(+), 25 deletions(-) diff --git a/js/includes/input-phone-contact-min.js b/js/includes/input-phone-contact-min.js index b70f3ea..e11dffe 100644 --- a/js/includes/input-phone-contact-min.js +++ b/js/includes/input-phone-contact-min.js @@ -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}; -inputPhoneContact.prototype.fieldsToStorage=function(){console.log("CONTACTS: FIELDS TO STORAGE");for(var a=$$("article.contact-panel .new-contact"),c=0;c=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"+(1+c/10)+""}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)}; +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"),b=0;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 b=$$("#nav-contact > span.active"),c=0;c"+(1+b/10)+""}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 b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1)}; diff --git a/js/includes/input-phone-contact.js b/js/includes/input-phone-contact.js index d17e5fc..1e72f18 100644 --- a/js/includes/input-phone-contact.js +++ b/js/includes/input-phone-contact.js @@ -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 // var deflated = deflater.deflate(); - console.log(deflated); + // 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 diff --git a/manager/module/call_log.php b/manager/module/call_log.php index 2e3ed60..fe0872f 100644 --- a/manager/module/call_log.php +++ b/manager/module/call_log.php @@ -98,15 +98,12 @@ 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 - $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 + $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) + $call_sorted = array(); // Contiendra l'annuaire trié par nombre d'interraction /* (1) Tant qu'on a pas tout trié */ while( count($tmp) > 0 ){ @@ -115,22 +112,51 @@ /* (2) On parcours toutes les entrées puor trouver le plus proche */ 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 - $maxVal = $data['sms']+5*$data['calls']; + $maxVal = $data['calls']; // 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($sorted_directory, array( + array_push($call_sorted, array( 'number' => $maxNumber, 'name' => $tmp[$maxNumber]['name'], - 'calls' => $tmp[$maxNumber]['calls'], - 'sms' => $tmp[$maxNumber]['sms'], - 'total' => $tmp[$maxNumber]['sms'] + 5*$tmp[$maxNumber]['calls'] + 'count' => $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]); } @@ -139,8 +165,10 @@ =========================================================*/ return array( 'ModuleError' => ManagerError::Success, - 'directory' => $sorted_directory, - 'logs' => $phone_logs + 'directory' => $phone_directory, + 'calls' => $call_sorted, + 'sms' => $sms_sorted, + 'logs' => $phone_logs ); } diff --git a/view/js/input.js b/view/js/input.js index 7e1ed7c..9ff052b 100644 --- a/view/js/input.js +++ b/view/js/input.js @@ -211,6 +211,13 @@ include('/js/includes/input-phone-fiche.js', function(){ + + + + + + + /* (5) Gestion de l'import du fichier ---------------------------------------------------------*/ importCallLog.addEventListener('change', function(e){