From eccd61eafcc6a4e736a1920ca0ed646b104c5233 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sat, 9 Apr 2016 21:28:30 +0200 Subject: [PATCH] =?UTF-8?q?Gestion=20de=20la=20d=C3=A9l=C3=A9gation=20pour?= =?UTF-8?q?=20le=20module=20@charts=20et=20donn=C3=A9es=20+=20rendu=20pour?= =?UTF-8?q?=20networkChart=20(affichage=20de=20base=20peu=20parametrable)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/modules.json | 4 +- manager/module/chart/networkChart.php | 163 ++++++++++++++++++++++++++ manager/module/charts.php | 140 ++-------------------- view/charts.php | 4 +- 4 files changed, 180 insertions(+), 131 deletions(-) create mode 100644 manager/module/chart/networkChart.php diff --git a/config/modules.json b/config/modules.json index 01a4320..5a23a2d 100755 --- a/config/modules.json +++ b/config/modules.json @@ -8,8 +8,8 @@ "charts": [ - "field_data", - "field_render" + "network_data", + "network_render" ], diff --git a/manager/module/chart/networkChart.php b/manager/module/chart/networkChart.php new file mode 100644 index 0000000..fc88e8c --- /dev/null +++ b/manager/module/chart/networkChart.php @@ -0,0 +1,163 @@ + 17, + + /* (2) Liste des alters */ + 'alter' => array( + // Pour chaque alter, on a ID_ALTER, NOM_ALTER, AFFINITE_ALTER + array(15, 'Jean', 90), // 90% proche + array(3, 'George', 20), + array(18, 'Jacques', 30), + array(11, 'Jacquie', 40), + array(1, 'Martin', 50), + array(12, 'Martine', 60) + ), + + /* (1) Liste des relations */ + 'inter' => array( + array(12, 3), + array(15, 3), + array(3, 18), + array(18, 1) + ) + + ); + + /* [5] Gestion du retour + =========================================================*/ + return array( + 'ModuleError' => ManagerError::Success, + 'data' => $data + ); + } + + + + + + + + + + + + /* RETOURNE UN SVG CORRESPONDANT AU GRAPHIQUE #FIELD + * + * @data Jeu de donnees + * + * @return render Contenu du svg representation graphique des donnees + * + */ + public static function render($data){ + $render = ""; + $nb_circles = 4; + + + // Couleur Facebook + $facebook = 0x3b5998; + + /* [1] On genere le debut du svg + =========================================================*/ + $render .= ''; + $render .= ''; + + /* [2] On cree le contexte (cercles dont ego) + =========================================================*/ + $circles = array(); + + // Difference de rayon (40 = taille ego + espace) + $raddiff = (500-50) / ($nb_circles); + + // Pour chaque cercle dont ego + for( $i = 0 ; $i < $nb_circles ; $i++ ){ + + $circles[$i] = ""; + + } + + $circles[ $nb_circles ] = ""; + + + /* [3] On cree les elements dynamiques + =========================================================*/ + /* (1) On calcule l'angle de diff entre chaque ALTER */ + $ang = 2*pi() / count($data['alter']); + + /* (2) On ajoute tous les alters */ + $alters = array(); + $origins = array(); + foreach($data['alter'] as $i=>$alter){ + // On calcule l'origine (centre du cercle) + $origins[$alter[0]] = array( + 'x' => 500 + (100-$alter[2])*(400/100) * cos($ang*$i), + 'y' => 500 + (100-$alter[2])*(400/100) * sin($ang*$i) + ); + + // On ajoute le cercle associe a l'alter courant + $alters[$i] = ""; + + } + + + /* [4] On relie toutes les relations + =========================================================*/ + $inter = array(); + foreach($data['inter'] as $rel){ + $lefthand = isset($origins[$rel[0]]) && is_array($origins[$rel[0]]); + $righthand = isset($origins[$rel[1]]) && is_array($origins[$rel[1]]); + + // Si les deux existent, on les relie + if( $lefthand && $righthand ) + array_push($inter, + "" + ); + } + + + + /* [5] On ajoute les elements et on ferme le svg + =========================================================*/ + foreach($circles as $circle) $render .= $circle; // les cercles (dont ego) + foreach($inter as $rel) $render .= $rel; // les relations + foreach($alters as $alter) $render .= $alter; // les alters + + $render .= ""; + + + /* [6] Gestion du retour + =========================================================*/ + return array( + 'ModuleError' => ManagerError::Success, + 'render' => $render + ); + } + + + + + + + + + + + + } + + +?> \ No newline at end of file diff --git a/manager/module/charts.php b/manager/module/charts.php index f3e160f..531917f 100644 --- a/manager/module/charts.php +++ b/manager/module/charts.php @@ -1,149 +1,35 @@ 17, - - /* (2) Liste des alters */ - 'alter' => array( - // Pour chaque alter, on a ID_ALTER, NOM_ALTER, AFFINITE_ALTER - array(15, 'Jean', 90), // 90% proche - array(3, 'George', 20), - array(18, 'Jacques', 30), - array(11, 'Jacquie', 40), - array(1, 'Martin', 50), - array(12, 'Martine', 60) - ), - - /* (1) Liste des relations */ - 'inter' => array( - array(12, 3), - array(15, 3), - array(3, 18), - array(18, 1) - ) - - ); - - - /* [5] Gestion du retour - =========================================================*/ - return array( - 'ModuleError' => ManagerError::Success, - 'data' => $data - ); + public static function network_data(){ + return networkChart::data(); } - - - - - - - - - - - /* RETOURNE UN SVG CORRESPONDANT AU GRAPHIQUE #FIELD + /* RETOURNE UN SVG CORRESPONDANT AU GRAPHIQUE #NETWORK * * @data Jeu de donnees * * @return render Contenu du svg representation graphique des donnees * */ - public static function field_render($data){ - - - - - debug(); - - - - - - $render = ""; - /* [1] On genere le debut du svg - =========================================================*/ - $render .= ''; - $render .= ''; - - /* [2] On cree le contexte (cercles dont ego) - =========================================================*/ - $ego = ""; - $close = ""; - $veryclose = ""; - - - /* [3] On cree les elements dynamiques - =========================================================*/ - /* (1) On calcule l'angle de diff entre chaque ALTER */ - $ang = 2*pi() / count($data['alter']); - - /* (2) On ajoute tous les alters */ - $alters = array(); - $origins = array(); - foreach($data['alter'] as $i=>$alter){ - // On calcule l'origine (centre du cercle) - $origins[$alter[0]] = array( - 'x' => 500 + (100-$alter[2])*(400/100) * cos($ang*$i), - 'y' => 500 + (100-$alter[2])*(400/100) * sin($ang*$i) - ); - - // On ajoute le cercle associe a l'alter courant - $alters[$i] = ""; - - } - - - /* [4] On relie toutes les relations - =========================================================*/ - $inter = array(); - foreach($data['inter'] as $rel){ - $lefthand = isset($origins[$rel[0]]) && is_array($origins[$rel[0]]); - $righthand = isset($origins[$rel[1]]) && is_array($origins[$rel[1]]); - - // Si les deux existent, on les relie - if( $lefthand && $righthand ) - array_push($inter, - "" - ); - } - - - - /* [5] On ajoute les elements et on ferme le svg - =========================================================*/ - $render .= $close; - $render .= $veryclose; - foreach($inter as $rel) $render .= $rel; // les relations - foreach($alters as $alter) $render .= $alter; // les alters - $render .= $ego; - - $render .= ""; - - - /* [6] Gestion du retour - =========================================================*/ - return array( - 'ModuleError' => ManagerError::Success, - 'render' => $render - ); + public static function network_render($data){ + return networkChart::render($data); } diff --git a/view/charts.php b/view/charts.php index a9bc5ed..2f8b0a2 100755 --- a/view/charts.php +++ b/view/charts.php @@ -13,7 +13,7 @@ /* [1] Gestion du cercle des relations =======================================*/ /* (1) On recupere les donnees */ -$getData = new ModuleRequest('charts/field_data'); +$getData = new ModuleRequest('charts/network_data'); $answer = $getData->dispatch(); // Si pas d'erreur @@ -25,7 +25,7 @@ $data = $answer->get('data'); /* (2) On recupere le rendu */ -$getRender = new ModuleRequest('charts/field_render', array($data)); +$getRender = new ModuleRequest('charts/network_render', array($data)); $answer = $getRender->dispatch(); // Si pas d'erreur