Forum Discussion
CherylStGermain
10 months agoCommunity Member
Remove columns from report.html
Hi! I'm looking to remove columns from the report.html so that it only shows the Question and the learner's response. What code do I need to remove? I've been trying different things all day and my H...
SamHill
10 months agoSuper Hero
Hi CherylStGermain I have commented out the appropriate table headers (TH) and table cells (TD) for the report. Available for download at the bottom of this post. <- Forums continue to be buggy and the file disappears when I post the reply. You will just have to copy the code.
<!DOCTYPE html>
<html lang="en">
<head>
__SAVED_FROM__
<meta charset="utf-8">
<title>Results</title>
<style>
body {
font-family: arial;
text-align: center;
font-size:10pt;
}
table {
border: 1px outset grey;
}
td, th {
border: 1px inset grey;
}
table.summary {
width: 600px;
}
table.questions {
width: 100%;
}
td {
width: 12.5%;
}
th, h3 {
font-size:12pt;
}
h1, h2 {
font-size:14pt;
}
.correct {
color: #008800;
}
.incorrect {
color: #880000;
}
.neutral {
color: #000088;
}
.question {
text-align: left;
width: 46.25%;
}
.number {
font-size:10pt;
width: 3.75%;
}
.datetime {
font-size:10pt;
margin-top: 0;
margin-bottom: 0;
}
</style>
<script>
var strings = {}
try {
strings = {
months: [
__MONTH_JAN__,
__MONTH_FEB__,
__MONTH_MAR__,
__MONTH_APR__,
__MONTH_MAY__,
__MONTH_JUN__,
__MONTH_JUL__,
__MONTH_AUG__,
__MONTH_SEP__,
__MONTH_OCT__,
__MONTH_NOV__,
__MONTH_DEC__
],
dateTime: __DATE_TIME__,
studentScore: __STUDENT_SCORE__,
passScore: __PASSING_SCORE__,
courseResult: __COURSE_RESULT__,
question: __QUESTION__,
correctAnswer: __CORRECT_ANS__,
quizResult: __QUIZ_RESULT__,
studentAnswer: __STUDENT_ANS__,
pointsAwarded: __POINTS_AWARD__,
neutral: __NEUTRAL__,
correct: __CORRECT__,
incorrect: __INCORRECT__
};
} catch (e) {
strings = {
months: [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
],
dateTime: 'Date / Time',
studentScore: 'Student Score',
passingScore: 'Passing Score',
courseResult: 'Result',
question: 'Question',
correctAnswer: 'Correct Answer',
quizResult: 'Result',
studentAnswer: 'Student Answer',
pointsAwarded: 'Points Awarded',
neutral: 'Neutral',
correct: 'Correct',
incorrect: 'Incorrect'
};
}
function setupPrint(data) {
var courseResults = data.g_oContentResults,
quizzes = data.g_listQuizzes,
printOptions = data.g_oPrintOptions,
quizOrder = printOptions.arrQuizzes,
mainQuiz = quizzes[printOptions.strMainQuizId];
// turn date back into date object
courseResults.dtmFinished = new Date(JSON.parse(courseResults.dtmFinished));
function displayHeader() {
var header = document.getElementById('header'),
userName = printOptions.strName
config = {
elName: 'div',
children: [
{ elName: 'h1', text: mainQuiz.strQuizName},
{ elName: 'h2', text: userName, enabled: userName != null && userName.length > 0},
]
};
header.appendChild(createElFromDef(config));
}
function displayCourseSummary() {
var survey = printOptions.bSurvey,
showUserScore = !survey && printOptions.bShowUserScore,
showPassingScore = !survey && printOptions.bShowPassingScore,
showPassFail = !survey && printOptions.bShowShowPassFail,
studentScore = Number(mainQuiz.nPtScore),
passingScore = Number(mainQuiz.nPassingScore),
courseResult = (studentScore >= passingScore) ? 'Pass' : 'Fail',
currentDateTime = formatDate(courseResults.dtmFinished),
courseSummary = document.getElementById('courseSummary'),
config = {
elName: 'table',
attrs: [{ name: 'class', value: 'summary' }, { name: 'align', value: 'center' }],
children: [
{ elName: 'tr',
children: [
{ elName: 'th', text: strings.dateTime},
{ elName: 'th', text: strings.studentScore, enabled: showUserScore},
{ elName: 'th', text: strings.passingScore, enabled: showPassingScore},
{ elName: 'th', text: strings.courseResult, enabled: showPassFail}
]},
{ elName: 'tr',
children: [
{ elName: 'td',
children: [
{ elName: 'p', attrs: [{ name: 'class', value:'datetime' }], text: currentDateTime.date },
{ elName: 'p', attrs: [{ name: 'class', value:'datetime' }], text: currentDateTime.time }
]},
{ elName: 'td', text: studentScore, enabled: showUserScore },
{ elName: 'td', text: passingScore, enabled: showPassingScore },
{ elName: 'td', text: courseResult, enabled: showPassFail }
]}
]
};
courseSummary.appendChild(createElFromDef(config));
}
function displayQuizResults() {
for (var i = 0; i < quizOrder.length; i++) {
var quizId = quizOrder[i];
displayQuizResult(quizId);
}
};
function displayQuizResult(quizId) {
var i, resultsTable;
quiz = quizzes[quizId],
questionOrder = getQuestionOrder(quiz),
quizDiv = createQuizDiv(quiz),
quizReview = document.getElementById('quizReview');
quizReview.appendChild(quizDiv);
resultsTable = document.getElementById([ 'results-', quizId ].join(''));
for (i = 0; i < questionOrder.length; i++) {
var config = getQuestionConfig(quiz, questionOrder[i]);
resultsTable.appendChild(createElFromDef(config));
}
};
function createQuizDiv(quiz) {
var survey = printOptions.bSurvey;
return createElFromDef({
elName: 'div',
children: [
{ elName: 'h3', text: quiz.strQuizName },
{ elName: 'table',
attrs: [
{ name: 'class', value: 'questions' },
{ name: 'id', value: [ 'results-', quiz.strQuizId ].join('') }
],
children: [
{ elName: 'tr', children: [
{ elName: 'th', text: '#' },
{ elName: 'th', text: strings.question },
/*{ elName: 'th', text: strings.correctAnswer, enabled: !survey},*/
{ elName: 'th', text: strings.studentAnswer },
/*{ elName: 'th', text: strings.quizResult, enabled: !survey },,*/
/*{ elName: 'th', text: strings.pointsAwarded, enabled: !survey },*/
]}
]}
]
});
};
function createElFromDef(elDef) {
if (elDef.enabled === false) {
return null;
}
var el = createAndInitElement(elDef.elName, elDef.attrs, elDef.text);
if (elDef.children != null) {
for (var i = 0; i < elDef.children.length; i++) {
currEl = createElFromDef(elDef.children[i]);
if (currEl != null) {
el.appendChild(currEl);
}
}
}
return el;
};
function createAndInitElement(elementName, attrs, text) {
var el = document.createElement(elementName);
if (attrs != null) {
for (var i = 0; i < attrs.length; i++) {
var attr = attrs[i];
el.setAttribute(attr.name, attr.value);
}
}
if (text != null) {
el.appendChild(document.createTextNode(text));
}
return el;
};
function getQuestionOrder(quiz) {
var i, j,
questionOrder = [],
questions = quiz.arrQuestions;
if (questions != null && questions.length > 0) {
// reset
if (questions[0].found) {
for (var i = 0; i < questions.length; i++) {
questions[i].found = false;
}
}
for (i = questions.length - 1; i >= 0; i--) {
var index = -1,
maxQuestionNum = -1,
currQuestionNum;
for (j = 0; j < questions.length; j++) {
currQuestionNum = Number(questions[j].nQuestionNumber);
if (!questions[j].found && currQuestionNum > maxQuestionNum) {
maxQuestionNum = currQuestionNum;
if (index >= 0) {
questions[index].found = false;
}
questions[j].found = true;
index = j;
}
}
questionOrder[i] = index;
}
}
return questionOrder;
}
function getQuestionConfig(quiz, questionIdx) {
var questions = quiz.arrQuestions,
question = questions[questionIdx],
survey = printOptions.bSurvey;
return {
elName: 'tr',
children: [
{ elName: 'td', attrs: [{ name: 'class', value: 'number'}], text: question.nQuestionNumber },
{ elName: 'td', attrs: [{ name: 'class', value: 'question'}], text: question.strDescription },
/* { elName: 'td', text: formatResponse(question.strCorrectResponse), enabled: !survey}, */
{ elName: 'td', text: formatResponse(question.strUserResponse) },
/* { elName: 'td', attrs: [{ name: 'class', value: question.strStatus}], text: strings[question.strStatus], enabled: !survey }, */
/* { elName: 'td', text: question.nPoints, enabled: !survey } */
]
};
};
function formatResponse(response) {
return (response != null) ? response.replace(/\|#\|/g, ', ') : ' ';
}
function formatDate(dtm) {
var hours = dtm.getHours(),
period = hours >= 12 ? 'pm' : 'am',
minutes = dtm.getMinutes().toString(),
month = strings.months[dtm.getMonth()],
date = dtm.getDate(),
year = dtm.getFullYear();
while (minutes.length < 2) {
minutes = '0' + minutes;
}
if (hours > 12) {
hours -= 12;
}
return {
date: [ month, ' ', date, ', ', year ].join(''),
time: [ hours, ':', minutes, ' ', period ].join('')
}
};
function init() {
displayHeader();
displayCourseSummary();
if (printOptions.bShowQuizReview) {
displayQuizResults();
}
}
init();
}
try {
// use post message to allow this to work locally and in 360 review
window.opener.postMessage('getQuizData', '*');
}
catch (e) {
// post message can fail when launched from CD output exe
window.onload = function() {
setupPrint(JSON.parse(opener.DS.presentation.ReportQuizVars));
}
}
window.addEventListener('message', function (e) {
setupPrint(JSON.parse(e.data));
}, false);
</script>
</head>
<body>
<div id="header"></div>
<p> </p>
<div id="courseSummary"></div>
<p> </p>
<div id="quizReview"></div>
</body>
</html>
CherylStGermain
9 months agoCommunity Member
This is amazing! Thank you. I will test it as soon as I'm ready to upload the course to our LMS Sandbox!
Related Content
- 3 months ago