Index: lams_tool_assessment/web/includes/javascript/chart.js
===================================================================
diff -u
--- lams_tool_assessment/web/includes/javascript/chart.js (revision 0)
+++ lams_tool_assessment/web/includes/javascript/chart.js (revision 52c0736c3d1adbba1c561772f11a79194356e247)
@@ -0,0 +1,182 @@
+function drawCompletionCharts(toolContentId, animate) {
+ $.ajax({
+ 'url' : WEB_APP_URL + 'monitoring/getCompletionChartsData.do',
+ 'data': {
+ 'toolContentId' : toolContentId
+ },
+ 'dataType' : 'json',
+ 'success' : function(data) {
+ // draw charts for the first time
+ drawActivityCompletionChart(data, animate);
+ drawAnsweredQuestionsChart(data, animate);
+ }
+ });
+
+ if (activityCompletionChart == null && answeredQuestionsChart == null && COMPLETION_CHART_UPDATE_INTERVAL > 0) {
+ if (typeof completionChartInterval != 'undefined' && completionChartInterval) {
+ window.clearInterval(completionChartInterval);
+ }
+
+ // set up update interval for the charts
+ completionChartInterval = window.setInterval(function(){
+ drawCompletionCharts(toolContentId, animate);
+ }, COMPLETION_CHART_UPDATE_INTERVAL);
+ }
+}
+
+function drawActivityCompletionChart(data, animate){
+ var newData = [ data.possibleLearners - data.startedLearners,
+ data.startedLearners - data.completedLearners,
+ data.completedLearners
+ ];
+ if (activityCompletionChart != null) {
+ // chart already exists, just update data
+ activityCompletionChart.data.datasets[0].data = newData;
+ activityCompletionChart.update();
+ return;
+ }
+
+ let ctx = document.getElementById('activity-completion-chart').getContext('2d');
+
+ activityCompletionChart = new Chart(ctx, {
+ type : 'doughnut',
+ borderWidth : 0,
+ data : {
+ elements : {
+ arc : {
+ borderWidth : 0,
+ fontSize : 0,
+ }
+ },
+ datasets : [ {
+ data : newData,
+ backgroundColor : [ 'rgba(5, 204, 214, 1)',
+ 'rgba(255, 195, 55, 1)',
+ 'rgba(253, 60, 165, 1)',
+ ],
+ borderWidth : 0,
+ } ],
+ labels : [ LABELS.ACTIVITY_COMPLETION_CHART_POSSIBLE_LEARNERS,
+ LABELS.ACTIVITY_COMPLETION_CHART_STARTED_LEARNERS,
+ LABELS.ACTIVITY_COMPLETION_CHART_COMPLETED_LEARNERS ]
+ },
+ options : {
+ layout : {
+ padding : {
+ top: 10
+ }
+ },
+ legend : {
+ position: 'left',
+ labels : {
+ generateLabels : function(chart) {
+ var data = chart.data;
+ if (data.labels.length && data.datasets.length) {
+ return data.labels.map(function(label, i) {
+ var meta = chart.getDatasetMeta(0),
+ style = meta.controller.getStyle(i),
+ value = data.datasets[0].data[i];
+
+ return {
+ text: label + ": " + value,
+ fillStyle: style.backgroundColor,
+ strokeStyle: style.borderColor,
+ lineWidth: style.borderWidth,
+ hidden: isNaN(value) || meta.data[i].hidden,
+
+ // Extra data used for toggling the
+ // correct item
+ index: i
+ };
+ });
+ }
+ return [];
+ }
+ }
+ },
+ title : {
+ display: true,
+ fontSize : '15',
+ text : LABELS.ACTIVITY_COMPLETION_CHART_TITLE
+ },
+ animation : {
+ animateScale : true,
+ animateRotate : true,
+ duration : animate ? 1000 : 0
+ }
+ }
+ });
+}
+
+function drawAnsweredQuestionsChart(data, animate){
+ if (!data.answeredQuestionsByUsers) {
+ return;
+ }
+
+ var newData = Object.values(data.answeredQuestionsByUsers);
+ if (answeredQuestionsChart != null) {
+ // chart already exists, just update data
+ answeredQuestionsChart.data.datasets[0].data = newData;
+ answeredQuestionsChart.update();
+ return;
+ }
+
+ let ctx = document.getElementById('answered-questions-chart').getContext('2d');
+ answeredQuestionsChart = new Chart(ctx, {
+ type : 'bar',
+ data : {
+ datasets : [ {
+ data : newData,
+ backgroundColor : 'rgba(255, 195, 55, 1)'
+
+ } ],
+ labels : Object.keys(data.answeredQuestionsByUsers),
+ },
+ options : {
+ layout : {
+ paddint : {
+ top : 30
+ }
+ },
+ legend : {
+ display : false
+ },
+ title : {
+ display: true,
+ fontSize : '15',
+ lineHeight: 3,
+ text : LABELS.ANSWERED_QUESTIONS_CHART_TITLE
+ },
+ animation : {
+ duration : animate ? 1000 : 0
+ },
+ scales : {
+ xAxes : [{
+ scaleLabel : {
+ display : true,
+ labelString : LABELS.ANSWERED_QUESTIONS_CHART_X_AXIS
+ }
+ }
+ ],
+ yAxes : [
+ {
+ ticks : {
+ beginAtZero : true,
+ stepSize : 1,
+ maxTicksLimit : 5,
+ // prevent scale to change on each update
+ // set suggested max number of students to 3/4
+ // of all possible learners
+ suggestedMax : 3 * data.possibleLearners / 4
+ },
+ scaleLabel : {
+ display : true,
+ labelString : LABELS.ANSWERED_QUESTIONS_CHART_Y_AXIS,
+ fontSize : 14
+ }
+ }
+ ]
+ }
+ }
+ });
+}
\ No newline at end of file
Index: lams_tool_assessment/web/pages/monitoring/monitoring.jsp
===================================================================
diff -u -r5cd084f4d230ff2f8ee3f69a4e59272af1617598 -r52c0736c3d1adbba1c561772f11a79194356e247
--- lams_tool_assessment/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision 5cd084f4d230ff2f8ee3f69a4e59272af1617598)
+++ lams_tool_assessment/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision 52c0736c3d1adbba1c561772f11a79194356e247)
@@ -39,26 +39,43 @@
@@ -71,11 +88,13 @@
+
-
-
+
+
+