Rapports statistiques

De WIKI-BOKEH
Aller à : navigation, rechercher

Objectif[ ]

Générer des rapports basés sur une extraction des données de Bokeh pouvant contenir des champs personnalisés.
Le rapport doit être exprimé en Javascript, quelques notions dans ce language sont plus que recommandées.


Où trouver les rapports statistiques ?[ ]

Dans l'interface d'admin, une entrée Rapport Statistiques est disponible dans le menu système.

Stat reports menu.png

Définir un nouveau rapport[ ]

Vous pouvez accéder à la création de rapport en utilisant le bouton "Nouveau rapport".

Reports.png

Modification d'un rapport[ ]

Un rapport est constitué d'un libellé et d'un script javascript.

Report sample.png

Le bouton Valider enregistre le script du rapport alors que le bouton Générer lance l'exécution du script.

Fonctions utilitaires[ ]

$.fn.report_helper()[ ]

retourne l'objet JQuery vous permettant d'appeler les différentes fonctions.
Exemple:

var helper = $.fn.report_helper();


jsonContent(url)[ ]

Retourne le résultat JSON de l'url fournie en paramètre.


downloadReport(datas)[ ]

Déclenche le téléchargement d'un fichier au format CSV dont le contenu est représenté dans datas.
Exemple:

var datas = 'thematiques;sessions\r\n"Cataloguage";3\r\n"Informatique";4';


datasFields(model)[ ]

Retourne, en Json, les données des champs personnalisés du le model fournit en paramètre.
Exemple:

var datas = helper.datasFields('Activity');


fieldValues(model)[ ]

Retourne , en Json, les valeurs des champs personnalisés du model fournit en paramètre.
Exemple:

var values = helper.fieldValus('Activity');


numberOf(model, id, child)[ ]

Retourne le nombre d'enfants du model comportant la valeur.
L' "id" correspond à la clé primaire en base données de l'occurrence contenant la valeur du champ personnalisé.
Exemple:

var number_of_sessions_with_value_adulte = helper.numberOf('Activity', 2, 'Sessions')

URLs de récupération de données[ ]

/opac/datas/fields/model/[Article|Activity|UserGroup|SessionActivity][ ]

Retourne la liste des champs personnalisés affectés au model passé en paramètre.

/opac/datas/values/field/[ID][ ]

Retourne la liste de toutes les valeurs saisies pour le champs personnalisé dont l'identifiant est passé en paramètre.

/opac/datas/numberof/model/Class_[Article|Activity|UserGroup|SessionActivity]/id/[ID]/children/[CHILD_NAME][ ]

Retourne le nombre d'éléments "children" liés à un model de type "model" portant l'identifiant "id".


Exemple de script complet[ ]

Objectif[ ]

Obtenir un fichier CSV listant le nombre de sessions par "thématique" qui est un champ personnalisé des activités.

var helper = $.fn.report_helper();
// liste des champs configurés pour les activités
var fields = helper.datasFields('Activity');

// détection du premier champ dont le libellé est "thématique" et extraction de son identifiant
var id_field_thematique = 0;
for(var i=0;i<fields.length;i++) {
  var field = fields[i];
  if (field.label= 'thématique') {
    id_field_thematique = field.id;
    break;
  }
}

// liste de toutes les valeurs saisies pour le champ précédemment détecté
var values = helper.fieldValues(id_field_thematique);

var thematiques=[];
// pour chacune des valeurs
for (var i=0; i<values.length;i++) {
  // récupération du nombre de sessions de l'activité portant la valeur
  var numberOfSessions = helper.numberOf('Class_Activity', values[i].model_id, 'Sessions');  
  var value=values[i].value;
  // si la thématique n'a pas été rencontrée, création du compteur à 0
  if (!thematiques[value])
    thematiques[value]=0;
  // dans tous les cas, ajout du nombre de sessions au compteur
  thematiques[value]+=parseInt(numberOfSessions);
}

// entête du CSV
var datas = 'thematique;sessions\r\n';
// pour chacune des thématiques
for (var thematique in thematiques) {
  // ajout d'une ligne dans le CSV
  datas += '"' + thematique + '";' + thematiques[thematique] + '\r\n';
};

// déclenchement du téléchargement
helper.downloadReport(datas);