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(15, 3), // Jean connait George array(15, 1), // Jean connait Martin array(12, 18), // Martine connait Jacques ) ); /* [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 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 ); } } ?>