Gestion de la délégation pour le module @charts et données + rendu pour networkChart (affichage de base peu parametrable)
This commit is contained in:
parent
cd1f416990
commit
eccd61eafc
|
@ -8,8 +8,8 @@
|
||||||
|
|
||||||
"charts": [
|
"charts": [
|
||||||
|
|
||||||
"field_data",
|
"network_data",
|
||||||
"field_render"
|
"network_render"
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,163 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace manager\module\chart;
|
||||||
|
use \manager\sessionManager;
|
||||||
|
use \manager\ManagerError;
|
||||||
|
|
||||||
|
class networkChart{
|
||||||
|
|
||||||
|
|
||||||
|
/* RETOURNE UN JEU DE DONNEES POUR GRAPHIQUE #FIELD
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function data(){
|
||||||
|
/* [1] On cree de fausses donnees
|
||||||
|
=========================================================*/
|
||||||
|
$data = array(
|
||||||
|
/* (1) ID_EGO */
|
||||||
|
'ego' => 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<Array> Jeu de donnees
|
||||||
|
*
|
||||||
|
* @return render<String> 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 .= '<?xml version="1.0" encoding="UTF-8" standalone="no"?>';
|
||||||
|
$render .= '<svg height="500" viewBox="0 0 1000 1000" width="500" xmlns="http://www.w3.org/2000/svg">';
|
||||||
|
|
||||||
|
/* [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] = "<circle cx='500' cy='500' r='".(500-50-$i*$raddiff)."' fill='#".(($i%2==0)?'ddd':'fff')."' />";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$circles[ $nb_circles ] = "<circle cx='500' cy='500' r='20' fill='#ff5629' />";
|
||||||
|
|
||||||
|
|
||||||
|
/* [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] = "<circle cx='".$origins[$alter[0]]['x']."' cy='".$origins[$alter[0]]['y']."' r='20' fill='#53d192' title='".$alter[1]."' />";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* [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,
|
||||||
|
"<line x1='".$origins[$rel[0]]['x']."' y1='".$origins[$rel[0]]['y']."' x2='".$origins[$rel[1]]['x']."' y2='".$origins[$rel[1]]['y']."' stroke-width='5' stroke='#888' />"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* [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 .= "</svg>";
|
||||||
|
|
||||||
|
|
||||||
|
/* [6] Gestion du retour
|
||||||
|
=========================================================*/
|
||||||
|
return array(
|
||||||
|
'ModuleError' => ManagerError::Success,
|
||||||
|
'render' => $render
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
|
@ -1,149 +1,35 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace manager\module;
|
namespace manager\module;
|
||||||
use \manager\Database;
|
|
||||||
use \manager\sessionManager;
|
use \manager\sessionManager;
|
||||||
use \manager\ManagerError;
|
use \manager\ManagerError;
|
||||||
use \manager\Repo;
|
|
||||||
|
// On inclut les graphiques
|
||||||
|
use \manager\module\chart\networkChart;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class charts{
|
class charts{
|
||||||
|
|
||||||
|
|
||||||
/* RETOURNE UN JEU DE DONNEES POUR GRAPHIQUE #FIELD
|
/* RETOURNE UN JEU DE DONNEES POUR GRAPHIQUE #NETWORK
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function field_data(){
|
public static function network_data(){
|
||||||
/* [1] On cree de fausses donnees
|
return networkChart::data();
|
||||||
=========================================================*/
|
|
||||||
$data = array(
|
|
||||||
/* (1) ID_EGO */
|
|
||||||
'ego' => 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 #NETWORK
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* RETOURNE UN SVG CORRESPONDANT AU GRAPHIQUE #FIELD
|
|
||||||
*
|
*
|
||||||
* @data<Array> Jeu de donnees
|
* @data<Array> Jeu de donnees
|
||||||
*
|
*
|
||||||
* @return render<String> Contenu du svg representation graphique des donnees
|
* @return render<String> Contenu du svg representation graphique des donnees
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function field_render($data){
|
public static function network_render($data){
|
||||||
|
return networkChart::render($data);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
debug();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$render = "";
|
|
||||||
/* [1] On genere le debut du svg
|
|
||||||
=========================================================*/
|
|
||||||
$render .= '<?xml version="1.0" encoding="UTF-8" standalone="no"?>';
|
|
||||||
$render .= '<svg height="500" viewBox="0 0 1000 1000" width="500" xmlns="http://www.w3.org/2000/svg">';
|
|
||||||
|
|
||||||
/* [2] On cree le contexte (cercles dont ego)
|
|
||||||
=========================================================*/
|
|
||||||
$ego = "<circle cx='500' cy='500' r='20' fill='#ff5629' />";
|
|
||||||
$close = "<circle cx='500' cy='500' r='400' fill='#ddd' />";
|
|
||||||
$veryclose = "<circle cx='500' cy='500' r='200' fill='#fff' />";
|
|
||||||
|
|
||||||
|
|
||||||
/* [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] = "<circle cx='".$origins[$alter[0]]['x']."' cy='".$origins[$alter[0]]['y']."' r='20' fill='#53d192' title='".$alter[1]."' />";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* [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,
|
|
||||||
"<line x1='".$origins[$rel[0]]['x']."' y1='".$origins[$rel[0]]['y']."' x2='".$origins[$rel[1]]['x']."' y2='".$origins[$rel[1]]['y']."' stroke-width='5' stroke='#888' />"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [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 .= "</svg>";
|
|
||||||
|
|
||||||
|
|
||||||
/* [6] Gestion du retour
|
|
||||||
=========================================================*/
|
|
||||||
return array(
|
|
||||||
'ModuleError' => ManagerError::Success,
|
|
||||||
'render' => $render
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
/* [1] Gestion du cercle des relations
|
/* [1] Gestion du cercle des relations
|
||||||
=======================================*/
|
=======================================*/
|
||||||
/* (1) On recupere les donnees */
|
/* (1) On recupere les donnees */
|
||||||
$getData = new ModuleRequest('charts/field_data');
|
$getData = new ModuleRequest('charts/network_data');
|
||||||
$answer = $getData->dispatch();
|
$answer = $getData->dispatch();
|
||||||
|
|
||||||
// Si pas d'erreur
|
// Si pas d'erreur
|
||||||
|
@ -25,7 +25,7 @@ $data = $answer->get('data');
|
||||||
|
|
||||||
|
|
||||||
/* (2) On recupere le rendu */
|
/* (2) On recupere le rendu */
|
||||||
$getRender = new ModuleRequest('charts/field_render', array($data));
|
$getRender = new ModuleRequest('charts/network_render', array($data));
|
||||||
$answer = $getRender->dispatch();
|
$answer = $getRender->dispatch();
|
||||||
|
|
||||||
// Si pas d'erreur
|
// Si pas d'erreur
|
||||||
|
|
Loading…
Reference in New Issue