Blocks: Analytics graphs

block_analytics_graphs
Maintained by Picture of Marcelo Schmitt Marcelo Schmitt
Block that generates graphs intendend to facilitate pedagogical decisions. The graphs have zoom capabilities and allow fast communication with students through email.
815 sites
671 downloads
45 fans

This plugin provides five graphs that may facilitate the identification of student profiles. Those graphs allow the teacher to send messagens to users according to their behaviour inside a course. The graphs show:

  1. Grades Chart - The grades distribuition in a box graph to identifiy the differences among evaluations and students with problems.
  2. Content Accesses Chart - Which users accessed many different rsources.
  3. Number of Active Users Chart - How manu users are active in a certain time of day.
  4. Assignment Submissions Chart - Which users have submited assignments on time or late (tasks, quizzes and hotpotatoes).
  5. Hits distribution Chart - How each user is accessing the course and its resources in each cours week.

It is possible to click over graph elements in order to send email to a group of students (first two graphs) or to a particular student (last graph).


Thanks to Nadav Kavalerchik for the navigation code.

Thanks to Paul Nijbakker / Evgenii Pavliuk for so many things. Lots of new features. (https://github.com/marceloschmitt/moodle-block_analytics_graphs/releases/tag/v.4.0)

Thanks to Ben Chenoweth for H5P and Turnitin code.

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4

Contributors

Picture of Marcelo Schmitt
Marcelo Schmitt (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Picture of Marcelo Schmitt
    Mon, 15 May 2017, 8:49 PM
    Syusan

    You gave us an ideia. Lets make something generic to allow inclusion of other modules.
  • Picture of Marcelo Schmitt
    Thu, 29 Jun 2017, 8:13 PM
    We got a new version. I think everybody will enjoy. Many thanks to Paul Nijbakker, Evgenii Pavliuk and Ben Chenoweth. Great to see three continents working together.
  • Ricardo Caiado
    Fri, 30 Jun 2017, 12:06 AM
    Hi,

    Just installed "v4.0" and got this error message:

    ---------------------------
    Debug info: ERROR: column "md.name" must appear in the GROUP BY clause or be used in an aggregate function
    LINE 1: SELECT cm.module, md.name
    ^
    SELECT cm.module, md.name
    FROM mdl_course_modules cm
    LEFT JOIN mdl_modules md ON cm.module = md.id
    WHERE cm.course = $1
    GROUP BY cm.module
    [array (
    0 => '449',
    )]
    Error code: dmlreadexception
    Stack trace:

    line 479 of /lib/dml/moodle_database.php: dml_read_exception thrown
    line 250 of /lib/dml/pgsql_native_moodle_database.php: call to moodle_database->query_end()
    line 800 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->query_end()
    line 1190 of /blocks/analytics_graphs/lib.php: call to pgsql_native_moodle_database->get_records_sql()
    line 3989 of /lib/navigationlib.php: call to block_analytics_graphs_extend_navigation_course()
    line 3511 of /lib/navigationlib.php: call to settings_navigation->load_course_settings()
    line 724 of /lib/pagelib.php: call to settings_navigation->initialise()
    line 773 of /lib/pagelib.php: call to moodle_page->magic_get_settingsnav()
    line 136 of /blocks/settings/block_settings.php: call to moodle_page->__get()
    line 288 of /blocks/moodleblock.class.php: call to block_settings->get_content()
    line 230 of /blocks/moodleblock.class.php: call to block_base->formatted_contents()
    line 976 of /lib/blocklib.php: call to block_base->get_content_for_output()
    line 1028 of /lib/blocklib.php: call to block_manager->create_block_contents()
    line 476 of /lib/outputrenderers.php: call to block_manager->ensure_content_created()
    line 39 of /theme/bootstrapbase/renderers/core_renderer.php: call to core_renderer->standard_head_html()
    line 47 of /theme/pioneer/layout/course.php: call to theme_bootstrapbase_core_renderer->standard_head_html()
    line 1028 of /lib/outputrenderers.php: call to include()
    line 958 of /lib/outputrenderers.php: call to core_renderer->render_page_layout()
    line 244 of /course/view.php: call to core_renderer->header()
    ---------------------------

    Ubuntu 17.04
    PHP 7.0
    PostgreSQL 9.3
    Moodle 3.1.5+


  • Picture of Marcelo Schmitt
    Mon, 3 Jul 2017, 9:09 PM
    I think I correct it, Ricardo
  • Ricardo Caiado
    Mon, 3 Jul 2017, 9:20 PM
    It is still 4.0 version...

    -----------------------------

    Debug info: ERROR: column "md.name" must appear in the GROUP BY clause or be used in an aggregate function
    LINE 1: SELECT cm.module, md.name
    ^
    SELECT cm.module, md.name
    FROM mdl_course_modules cm
    LEFT JOIN mdl_modules md ON cm.module = md.id
    WHERE cm.course = $1
    GROUP BY cm.module
    [array (
    0 => '2945',
    )]
    Error code: dmlreadexception
    Stack trace:

    line 486 of /lib/dml/moodle_database.php: dml_read_exception thrown
    line 242 of /lib/dml/pgsql_native_moodle_database.php: call to moodle_database->query_end()
    line 776 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->query_end()
    line 45 of /blocks/analytics_graphs/block_analytics_graphs.php: call to pgsql_native_moodle_database->get_records_sql()
    line 288 of /blocks/moodleblock.class.php: call to block_analytics_graphs->get_content()
    line 230 of /blocks/moodleblock.class.php: call to block_base->formatted_contents()
    line 1197 of /lib/blocklib.php: call to block_base->get_content_for_output()
    line 1249 of /lib/blocklib.php: call to block_manager->create_block_contents()
    line 374 of /lib/blocklib.php: call to block_manager->ensure_content_created()
    line 3839 of /lib/outputrenderers.php: call to block_manager->region_has_content()
    line 40 of /theme/fordson/layout/course.php: call to core_renderer->blocks()
    line 1162 of /lib/outputrenderers.php: call to include()
    line 1092 of /lib/outputrenderers.php: call to core_renderer->render_page_layout()
    line 244 of /course/view.php: call to core_renderer->header()

  • Ricardo Caiado
    Mon, 3 Jul 2017, 9:23 PM
    It is weird...

    When I log in @ Moodle: Release date: Thursday, 29 June 2017, 3:47 PM

    When I log off @ Moodle: Release date: sexta, 30 Jun 2017, 02:47

    In both cases the version is "4.0".

  • Picture of omid ch
    Fri, 25 Aug 2017, 9:40 AM
    I get this error when I try to use grades charts or quiz submissions :
    Debug info: Table 'proflear_mood937.mdl_course' doesn't exist
    SELECT
    a.fullname
    FROM
    `mdl_course` a
    WHERE
    a.id = 2
    [array (
    )]
    Error code: dmlreadexception
    ×Stack trace:
    line 486 of /lib/dml/moodle_database.php: dml_read_exception thrown
    line 1175 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
    line 1075 of /blocks/analytics_graphs/lib.php: call to mysqli_native_moodle_database->get_records_sql()
    line 263 of /blocks/analytics_graphs/grades_chart.php: call to block_analytics_graphs_get_course_name()
    ×Output buffer: "Students" + " " + "with grades inferior or equal to" + " " + num + " (" + quartile + "%)"; return str; }; function mail_dialog(task_name, quartile){ var taskgrades = tasksinfo[tasknameid[task_name]]; var index; var title = "Students with grades smaller than or equal to" + " "; var students; quartile = parseInt(quartile); $("#" + tasknameid[task_name] + ".mail_dialog").dialog("open"); $("#" + tasknameid[task_name] + ".mail_dialog").dialog("option", "position", { my:"center top", at:"center top+" + 10, of:window }); $("#" + tasknameid[task_name] + ".mail_dialog").dialog("option", "width", 900); $("#" + tasknameid[task_name] + ".mail_dialog").dialog("option", "height", 600); if(quartile == 25){ index = taskgrades.q1_index; title += taskgrades.q1_grade.toFixed(2); } else if(quartile == 50){ index = taskgrades.median_index; title += taskgrades.median_grade.toFixed(2); } else{ index = taskgrades.q3_index; title += taskgrades.q3_grade.toFixed(2); } students = taskgrades.grades.slice(0, parseInt(index)+1); for(var s=0; s
  • Picture of Marcelo Schmitt
    Thu, 31 Aug 2017, 4:36 AM
    You are correct. There is a stupid mistake. I should have seen it. It is not possible to make FROM `mdl_course`. The syntax is FROM {course}. I will fix it right now.
  • Picture of Дмитрий Лоскутов
    Tue, 28 Nov 2017, 8:18 PM
    Hi.
    Just installed "v4.0" and got this error message:
    Debug: ERROR: column "md.name" must appear i
    n the GROUP BY clause or be used in an aggregate function
    LINE 1: SELECT cm.module, md.name
    ^
    SELECT cm.module, md.name
    FROM mdl_course_modules cm
    LEFT JOIN mdl_modules md ON cm.module = md.id
    WHERE cm.course = $1
    GROUP BY cm.module
    [array (
    0 => 26,
    )]
    Error code: dmlreadexception
    * line 474 of /lib/dml/moodle_database.php: dml_read_exception thrown
    * line 242 of /lib/dml/pgsql_native_moodle_database.php: call to moodle_database->query_end()
    * line 776 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->query_end()
    * line 102 of /blocks/analytics_graphs/lib.php: call to pgsql_native_moodle_database->get_records_sql()
    * line 31 of /blocks/analytics_graphs/graphresourcestartup.php: call to block_analytics_graphs_get_course_used_modules()
  • Ricardo Caiado
    Thu, 18 Jan 2018, 8:29 PM
    Hi,

    The error above still persists.

    It seems the block is not compatible with PostgreSQL.

    Ricardo
  • Picture of Marcelo Schmitt
    Thu, 18 Jan 2018, 9:41 PM
    I wil install a dev site with postgresql to test. Sorry
  • Picture of Marcelo Schmitt
    Fri, 26 Jan 2018, 4:19 AM
    Fixed. Tested with postgreSQL. Version 4.0.4 is ok for that database.
  • Picture of Chye Siaw
    Sun, 1 Apr 2018, 11:45 PM
    Hi, first of all this is a fantastic plugin! Many thanks for developing it.

    We have one issue that we've encountered. When a teacher is accessing these graphs, they are able to see all groups (not just their own group) despite not having "accessallgroups" permission. Is this a known issue?
  • Picture of Bruno Henrique Cury
    Thu, 10 May 2018, 3:04 AM
    Hi, Marcelo Schmitt

    How to show only "active students" in the course?
    For the chart brings all the participants, active and suspended.
    Thank you
  • Picture of Brandon Jimenez
    Fri, 11 May 2018, 3:08 AM
    Hi Bruno, if you can customize the query, you'd probably need to add a filter
1 2 3 4 5
Please login to post comments