From 604a09fed77c48240541313ba44b292f562ab89e Mon Sep 17 00:00:00 2001 From: Thomas Fradet Date: Thu, 20 Jun 2019 12:36:02 +0200 Subject: [PATCH] dashboard --- CHANGELOG.md | 23 +-- course_competency.php | 321 +++++++++++++----------------------------- js/cpt-stud-course.js | 24 ++++ 3 files changed, 136 insertions(+), 232 deletions(-) create mode 100644 js/cpt-stud-course.js diff --git a/CHANGELOG.md b/CHANGELOG.md index ad9e8ef..6853526 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,9 +79,9 @@ Changement du nom du plugin (fichiers de langue). ### Page de gestion des compétences liées au cours -[ ] Ajout d'un bouton pour ajouter les compétences en haut du tableau. +[-] Ajout d'un bouton pour ajouter les compétences en haut du tableau. -[ ] Si aucune compétence n'est liée au cours, au lieu d'afficher le tableau, afficher uniquement le bouton d'ajout d'une compétence (un seul sur les deux). +[-] Si aucune compétence n'est liée au cours, au lieu d'afficher le tableau, afficher uniquement le bouton d'ajout d'une compétence (un seul sur les deux). ### Page statut des compétences pour un utilisateur @@ -135,8 +135,6 @@ Ne pas utiliser de méthodes root, quitte à abandonner des fonctionnalités. Tr ### Page cpt x user x course -[ ] Récupérer toutes les données (ne marchera sûrement pas) - __Récupérer les données de base :__ [x] Nom de l'étudiant [x] Nom et description de la compétence @@ -145,18 +143,22 @@ __Récupérer les données de base :__ [x] Info évaluation demandée (review) [x] Evaluer un étudiant avec : évaluation, commentaire d'évaluation [x] Lever une éventuelle demande d'évaluation (review) quand on évalue -[ ] Demande et annulation de demande d'évaluation (par l'étudiant) -[ ] Historique d'évaluation en liste : essayer de récupérer l'exporteur de moodle -[ ] Historique d'évaluation en graphique +[x] Demande et annulation de demande d'évaluation (par l'étudiant) +[x] Historique d'évaluation en liste : essayer de récupérer l'exporteur de moodle +[x] Historique d'évaluation en graphique [x] Liste des modules de cours liés à l'activité avec lien vers l'activité -[ ] Etat d'achèvement du module de cours (attention de vérifier si achèvement activé à tous les niv) +[-] Etat d'achèvement du module de cours (attention de vérifier si achèvement activé à tous les niv) -[ ] Formulaire de changement d'étudiant avec les boutons précédent et suivant -[ ] Formulaire de changement de compétence avec les boutons précédent et suivant +[x] Formulaire de changement d'étudiant avec les boutons précédent et suivant +[x] Formulaire de changement de compétence avec les boutons précédent et suivant [x] Message d'erreur si l'étudiant demandé n'appartient pas au cours [x] Redirection si un étudiant essaie d'accéder à la page d'un autre étudiant + +[x] vérifier si il y a des evidences dans les 3 onglets et afficher ou non l'onglet en conséquence + + ### Page par activité Créer une page qui permet d'évaluer les compétences en lien avec une activité particulière ? Ou de lister l'acquisition des compétences pour cette activité ? @@ -166,3 +168,4 @@ Créer une page qui permet d'évaluer les compétences en lien avec une activit Changement de l'ordre et de l'apparence des boutons. Ajout d'un bouton pour aller à la vue cpt x users en plus de celui pour aller vers la vue user x cpts. Nommage : "tableaux de bord" => "par étudiant" (user x cpts) et "par compétence" (cpt x users). Ces deux listes mèneront vers le cpt x user. + diff --git a/course_competency.php b/course_competency.php index 4f527d9..fe130c0 100644 --- a/course_competency.php +++ b/course_competency.php @@ -19,7 +19,7 @@ $PAGE->set_heading($OUTPUT->heading($COURSE->fullname, 2, 'headingblock header o $PAGE->requires->js("/blocks/competency_iena/js/datalist-polyfill.min.js"); $PAGE->requires->js("/blocks/competency_iena/js/stud-x-cpts.js"); $PAGE->requires->js("/blocks/competency_iena/js/cpt-x-studs.js"); - +$PAGE->requires->js("/blocks/competency_iena/js/cpt-stud-course.js"); /* <<< GESTION DROITS D'ACCÈS >>> */ @@ -207,14 +207,14 @@ echo "
"; echo "
"; echo "
"; echo "

Validé

"; -echo "

{$proficiency}

"; +echo "

{$proficiency}

"; echo "
"; echo "
"; /* Grade info */ echo "
"; echo "
"; echo "

Évaluation

"; -echo "

{$eval}

"; +echo "

{$eval}

"; echo "
"; echo "
"; /* Review and grade ASK and ACTION */ @@ -263,128 +263,121 @@ echo "
"; /* END evaluation info and actions row */ /* GRADES AND EVIDENCES HISTORY CHART AND LIST */ -// quelle différence -// read_user_evidence($id) -// read_evidence($evidenceid) - -// delete_user_evidence($id) - -// pour toutes les cpt -// list_user_evidence($userid) - -// lié à la compétence -// list_evidence($userid = 0, $competencyid = 0, $planid = 0, $sort = 'timecreated', -// $order = 'DESC', $skip = 0, $limit = 0) - -// list_evidence_in_course($userid = 0, $courseid = 0, $competencyid = 0, $sort = 'timecreated', - // $order = 'DESC', $skip = 0, $limit = 0) - - - -// OKOK - - - /* Utilisation des renderer du /admin/tool/lp/class/output pour obtenir toutes les données d'historique construites et organisées */ -/* Dabord dans le cours, puis dans l'absolu pour les différencier / filtrer */ +/* /admin/tool/lp/user_competency.php?id= */ $tool_lp_renderer = $PAGE->get_renderer('tool_lp'); -$user_cpt_course_data = new \tool_lp\output\user_competency_summary_in_course($studentid, $competencyid, $courseid); -$user_cpt_course_data = $user_cpt_course_data->export_for_template($tool_lp_renderer); -$course_evidences = $user_cpt_course_data->usercompetencysummary->evidence; -$course_evidences_ids = array(); -foreach ($course_evidences as $course_evidence) { - $course_evidences_ids[] = $course_evidence->id; -} - $user_competency = \core_competency\api::get_user_competency($studentid, $competencyid); $user_cpt_all_data = new \tool_lp\output\user_competency_summary($user_competency); $user_cpt_all_data = $user_cpt_all_data->export_for_template($tool_lp_renderer); $all_evidences = $user_cpt_all_data->evidence; -echo "
"; -echo "
"; -echo "

Historique

"; -echo "
    "; -/* proficient or not depending of rating in scale (set in framework by creator) */ -foreach ($all_evidences as $key => $ev) { - /* mark difference between this course evidences in html for JS filter with tabs */ - if ( in_array($ev->id, $course_evidences_ids) ) { - $is_course_evidence = " data-evidenceorigin='course'"; - } else { - $is_course_evidence = " data-evidenceorigin='other'"; +if ( count($all_evidences) != 0 ) { + + $user_cpt_course_data = new \tool_lp\output\user_competency_summary_in_course($studentid, $competencyid, $courseid); + $user_cpt_course_data = $user_cpt_course_data->export_for_template($tool_lp_renderer); + $course_evidences = $user_cpt_course_data->usercompetencysummary->evidence; + $course_evidences_ids = array(); + foreach ($course_evidences as $course_evidence) { + $course_evidences_ids[] = $course_evidence->id; } - if ( $ev->action === "0" ) { - $grade_make_proficient = ' list-group-item-light'; - } else { - $scale_rules = json_decode($user_cpt_all_data->competency->scaleconfiguration); - foreach ($scale_rules as $scale_rule) { - if ( isset($scale_rule->proficient) && $scale_rule->id == $ev->grade && $scale_rule->proficient == 1 ) { - $grade_make_proficient = ' list-group-item-success'; + + /* CHART EVALUATION HISTORY */ + + $labels = array(); + $series_data_all = array(); + $series_data_course = array(); + $series_data_other = array(); + foreach ($all_evidences as $key => $ev) { + if ( isset($ev->grade) ) { + $labels[] = userdate($ev->timemodified, "%d/%m/%y"); + $series_data_all[] = $ev->grade; + if ( in_array($ev->id, $course_evidences_ids) ) { + $series_data_course[] = $ev->grade; + $series_data_other[] = 0; } else { - $grade_make_proficient = ''; + $series_data_course[] = 0; + $series_data_other[] = $ev->grade; } } } - $date = date("d/m/y – H:i", $ev->timemodified); - echo "
  • -
    "; - if ( isset($ev->gradename) ) { - echo "
    $ev->gradename
    "; - } - echo "{$date} -
    -

    {$ev->description}

    "; - if ( isset($ev->note) && $ev->note != "" ) { - echo "

    {$ev->note}

    "; - } - if ( isset($ev->actionuser) ) { - echo "Évalué par : {$ev->actionuser->fullname}"; - } - echo "
  • "; -} -echo "
"; -echo "
"; -echo ";"; -echo "
"; + echo ""; + echo ""; /* evidences list col */ + echo ""; /* evidences list row */ + +} /* END IF count all evidences (course and outside) == 0 */ echo "
";
-var_dump($course_evidences_ids);
-print_r($all_evidences);
+// print_r($all_evidences);
 echo "
"; /* @@ -395,127 +388,11 @@ Remonter ces données en haut et commenter les données préalablement récupér */ - -// echo $output_lp->render($cpt_base_page); - - - - - - -/* Data */ -$course_evidencies = \core_competency\api::list_evidence_in_course($studentid, $courseid, $competencyid, $sort = 'timecreated', $order = 'DESC', $skip = 0, $limit = 0); -$all_evidencies = \core_competency\api::list_evidence($studentid, $competencyid, $planid = 0, $sort = 'timecreated', $order = 'DESC', $skip = 0, $limit = 0); - -$evidences = array(); -foreach ($course_evidencies as $course_ev) { - $ev = new stdClass(); - // echo "
";
-	// var_dump($course_ev);
-	// echo "
"; - $ev->id = $course_ev->get('id'); - $ev->usercompetencyid = $course_ev->get('usercompetencyid'); - $ev->contextid = $course_ev->get('contextid'); - $ev->actionuserid = $course_ev->get('actionuserid'); - $ev->descidentifier = $course_ev->get('descidentifier'); /* nature de l'événement */ - // $course_ev->get('actionuserid') - $ev->out = $course_ev->get_description()->out(); - $evidences[] = $ev; -} - -foreach ($evidences as $ev) { - // echo "

{$ev->out}

"; -} - -// $user_competency_summary_in_course = new \tool_lp\output\user_competency_summary_in_course($studentid, $competencyid, $courseid); -// $dataSumCourse = $user_competency_summary_in_course->export_for_template(new renderer_base(new moodle_page(), 'autre')); -// var_dump($dataSumCourse); - - -$labels = array(); -$series_data = array(); -$series_data_all = array(); - -foreach ($all_evidencies as $evidence) { - // echo ""; -} - - -// echo "
";
-// var_dump($context->__get('id'));
-// var_dump($all_evidencies);
-// var_dump($series_data);
-// var_dump($series_data_all);
-// var_dump($labels);
-// echo "
"; - -// OK OK END - - - -echo "
"; -_html('h2', "Historique d'évaluation", "h3"); - -// $chart = new core\chart_line(); -// $chart->get_yaxis(0, true)->set_labels(["Non évaluant", "Non compétent", "Compétent"]); -// $series = new core\chart_series('Donnée dans ce cours', array_reverse($series_data)); -// $series_all = new core\chart_series("Donnée dans d'autres cours", array_reverse($series_data_all)); -// $chart->add_series($series); -// $chart->add_series($series_all); -// $chart->set_labels(array_reverse($labels)); -// echo $OUTPUT->render($chart); -// echo "
"; - -// $chart = new core\chart_bar(); -// $chart->get_yaxis(0, true)->set_labels(["Non évaluant", "Non compétent", "Compétent"]); -// $series = new core\chart_series('Donnée dans ce cours', array_reverse($series_data)); -// $series_all = new core\chart_series("Donnée dans d'autres cours", array_reverse($series_data_all)); -// $chart->add_series($series); -// $chart->add_series($series_all); -// $chart->set_labels(array_reverse($labels)); -// echo $OUTPUT->render($chart); -echo "
"; - /* LINKED MODULES */ +_html("h3", "Lié à cette compétence"); if ( count($cm_ids) !== 0 ) { $modinfo = get_fast_modinfo($courseid); - _html("h3", "Lié à cette compétence"); echo "
"; foreach ($cm_ids as $cm_id) { echo " {$modinfo->cms[$cm_id]->name}"; diff --git a/js/cpt-stud-course.js b/js/cpt-stud-course.js new file mode 100644 index 0000000..8941979 --- /dev/null +++ b/js/cpt-stud-course.js @@ -0,0 +1,24 @@ +(function() { + function active_tabs(active_tab) { + var tabs = document.querySelectorAll('#hist-tabs .nav-link'); + for ( var i=0; i < tabs.length; i++ ) { + tabs[i].setAttribute('class', 'nav-link'); + } + active_tab.setAttribute('class', 'nav-link active'); + } + function filter(type) { + var list_items = document.querySelectorAll('[data-evidenceorigin]'); + for ( var j = 0; j < list_items.length; j++ ) { + if ( type.indexOf(list_items[j].dataset.evidenceorigin) != -1 ) { + list_items[j].style.display = ''; + } else { + list_items[j].style.display = 'none'; + } + } + } + window.addEventListener('load', function() { + document.getElementById('all_history_tab').addEventListener('click', function (e) { e.preventDefault(); active_tabs(e.target); filter('course and other'); }); + document.getElementById('course_history_tab').addEventListener('click', function (e) { e.preventDefault(); active_tabs(e.target); filter('course'); }); + document.getElementById('other_history_tab').addEventListener('click', function (e) { e.preventDefault(); active_tabs(e.target); filter('other'); }); + }) +})(); \ No newline at end of file -- GitLab