pedago-angular-quiz
Version:
A pedago quiz component for Angular projects
87 lines • 9.46 kB
JavaScript
import { Pipe } from '@angular/core';
import * as i0 from "@angular/core";
export class ToSurveyJsJsonPipe {
transform(questions, ...args) {
if (!questions || !Array.isArray(questions)) {
return null;
}
const quiz = {
title: args[0]?.title ?? 'Demo quiz',
showTitle: args[0]?.showTitle ?? false,
startSurveyText: 'Start Quiz',
showProgressBar: 'top',
progressBarShowPageNumbers: true,
showPreviewBeforeComplete: 'showAllQuestions',
firstPageIsStarted: true,
showQuestionNumbers: true,
goNextPageAutomatic: false,
allowCompleteSurveyAutomatic: false,
maxTimeToFinish: 60,
completeText: {
fr: 'Send'
},
// widthMode: 'static',
// width: '1000px',
// showTimerPanel: 'bottom',
pages: [
{
"name": "page1",
"elements": [
{
"type": "html",
"html": "You are about to start a quiz. Click <b>Start Quiz</b> to begin."
},
]
},
]
};
const getQuestionType = (question) => {
if (question.type) {
return question.type;
}
if (question.options.filter((option) => option.is_correct).length > 1) {
return 'checkbox';
}
else {
return 'radiogroup';
}
};
questions.forEach((question, index) => {
const page = {
name: `page${index + 1}`,
navigationTitle: question.skill,
description: question.skill,
maxTimeToFinish: question.maxTimeToFinish ?? 10,
elements: [
{
type: getQuestionType(question),
name: question.name ?? `questionName${index + 1}`,
title: question.question,
choices: [],
correctAnswer: []
}
]
};
question.options.forEach((option) => {
// @ts-ignore
page.elements[0].choices.push(option.option);
if (option.is_correct) {
// @ts-ignore
page.elements[0].correctAnswer.push(option.option);
}
});
// @ts-ignore
quiz.pages.push(page);
});
return quiz;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToSurveyJsJsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ToSurveyJsJsonPipe, name: "toSurveyJsJson" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToSurveyJsJsonPipe, decorators: [{
type: Pipe,
args: [{
name: 'toSurveyJsJson'
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tc3VydmV5LWpzLWpzb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BlZGFnby1hbmd1bGFyLXF1aXovc3JjL2xpYi9waXBlcy90by1zdXJ2ZXktanMtanNvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQUtsRCxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLFNBQVMsQ0FBQyxTQUFjLEVBQUUsR0FBRyxJQUFXO1FBQ3RDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFHRCxNQUFNLElBQUksR0FBRztZQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFFLFdBQVc7WUFDbEMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLElBQUUsS0FBSztZQUNwQyxlQUFlLEVBQUUsWUFBWTtZQUM3QixlQUFlLEVBQUUsS0FBSztZQUN0QiwwQkFBMEIsRUFBRSxJQUFJO1lBQ2hDLHlCQUF5QixFQUFFLGtCQUFrQjtZQUM3QyxrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLG1CQUFtQixFQUFFLElBQUk7WUFDekIsbUJBQW1CLEVBQUUsS0FBSztZQUMxQiw0QkFBNEIsRUFBRSxLQUFLO1lBQ25DLGVBQWUsRUFBRSxFQUFFO1lBQ25CLFlBQVksRUFBRTtnQkFDWixFQUFFLEVBQUUsTUFBTTthQUNYO1lBQ0QsdUJBQXVCO1lBQ3ZCLG1CQUFtQjtZQUNuQiw0QkFBNEI7WUFDNUIsS0FBSyxFQUFFO2dCQUNMO29CQUNFLE1BQU0sRUFBRSxPQUFPO29CQUNmLFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxNQUFNLEVBQUUsTUFBTTs0QkFDZCxNQUFNLEVBQUUsa0VBQWtFO3lCQUMzRTtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNqQixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7YUFDdEI7WUFFRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUUsT0FBTyxVQUFVLENBQUM7YUFDbkI7aUJBQU07Z0JBQ0wsT0FBTyxZQUFZLENBQUE7YUFDcEI7UUFDSCxDQUFDLENBQUE7UUFFRCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBYSxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFHO2dCQUNYLElBQUksRUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0JBQ3hCLGVBQWUsRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDL0IsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUMzQixlQUFlLEVBQUUsUUFBUSxDQUFDLGVBQWUsSUFBSSxFQUFFO2dCQUMvQyxRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUM7d0JBQy9CLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFJLGVBQWUsS0FBSyxHQUFHLENBQUMsRUFBRTt3QkFDakQsS0FBSyxFQUFFLFFBQVEsQ0FBQyxRQUFRO3dCQUN4QixPQUFPLEVBQUUsRUFBRTt3QkFDWCxhQUFhLEVBQUUsRUFBRTtxQkFDbEI7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDdkMsYUFBYTtnQkFDYixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7b0JBQ3JCLGFBQWE7b0JBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDcEQ7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILGFBQWE7WUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0FsRlUsa0JBQWtCOzZHQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSDlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd0b1N1cnZleUpzSnNvbidcbn0pXG5leHBvcnQgY2xhc3MgVG9TdXJ2ZXlKc0pzb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKHF1ZXN0aW9uczogYW55LCAuLi5hcmdzOiBhbnlbXSk6IGFueSB7XG4gICAgaWYgKCFxdWVzdGlvbnMgfHwgIUFycmF5LmlzQXJyYXkocXVlc3Rpb25zKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG5cbiAgICBjb25zdCBxdWl6ID0ge1xuICAgICAgdGl0bGU6IGFyZ3NbMF0/LnRpdGxlPz8nRGVtbyBxdWl6JyxcbiAgICAgIHNob3dUaXRsZTogYXJnc1swXT8uc2hvd1RpdGxlPz9mYWxzZSxcbiAgICAgIHN0YXJ0U3VydmV5VGV4dDogJ1N0YXJ0IFF1aXonLFxuICAgICAgc2hvd1Byb2dyZXNzQmFyOiAndG9wJyxcbiAgICAgIHByb2dyZXNzQmFyU2hvd1BhZ2VOdW1iZXJzOiB0cnVlLFxuICAgICAgc2hvd1ByZXZpZXdCZWZvcmVDb21wbGV0ZTogJ3Nob3dBbGxRdWVzdGlvbnMnLFxuICAgICAgZmlyc3RQYWdlSXNTdGFydGVkOiB0cnVlLFxuICAgICAgc2hvd1F1ZXN0aW9uTnVtYmVyczogdHJ1ZSxcbiAgICAgIGdvTmV4dFBhZ2VBdXRvbWF0aWM6IGZhbHNlLFxuICAgICAgYWxsb3dDb21wbGV0ZVN1cnZleUF1dG9tYXRpYzogZmFsc2UsXG4gICAgICBtYXhUaW1lVG9GaW5pc2g6IDYwLFxuICAgICAgY29tcGxldGVUZXh0OiB7XG4gICAgICAgIGZyOiAnU2VuZCdcbiAgICAgIH0sXG4gICAgICAvLyB3aWR0aE1vZGU6ICdzdGF0aWMnLFxuICAgICAgLy8gd2lkdGg6ICcxMDAwcHgnLFxuICAgICAgLy8gc2hvd1RpbWVyUGFuZWw6ICdib3R0b20nLFxuICAgICAgcGFnZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOiBcInBhZ2UxXCIsXG4gICAgICAgICAgXCJlbGVtZW50c1wiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcImh0bWxcIixcbiAgICAgICAgICAgICAgXCJodG1sXCI6IFwiWW91IGFyZSBhYm91dCB0byBzdGFydCBhIHF1aXouIENsaWNrIDxiPlN0YXJ0IFF1aXo8L2I+IHRvIGJlZ2luLlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0UXVlc3Rpb25UeXBlID0gKHF1ZXN0aW9uOiBhbnkpID0+IHtcbiAgICAgIGlmIChxdWVzdGlvbi50eXBlKSB7XG4gICAgICAgIHJldHVybiBxdWVzdGlvbi50eXBlO1xuICAgICAgfVxuXG4gICAgICBpZiAocXVlc3Rpb24ub3B0aW9ucy5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiBvcHRpb24uaXNfY29ycmVjdCkubGVuZ3RoID4gMSkge1xuICAgICAgICByZXR1cm4gJ2NoZWNrYm94JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAncmFkaW9ncm91cCdcbiAgICAgIH1cbiAgICB9XG5cbiAgICBxdWVzdGlvbnMuZm9yRWFjaCgocXVlc3Rpb246IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgcGFnZSA9IHtcbiAgICAgICAgbmFtZTogYHBhZ2Uke2luZGV4ICsgMX1gLFxuICAgICAgICBuYXZpZ2F0aW9uVGl0bGU6IHF1ZXN0aW9uLnNraWxsLFxuICAgICAgICBkZXNjcmlwdGlvbjogcXVlc3Rpb24uc2tpbGwsXG4gICAgICAgIG1heFRpbWVUb0ZpbmlzaDogcXVlc3Rpb24ubWF4VGltZVRvRmluaXNoID8/IDEwLFxuICAgICAgICBlbGVtZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IGdldFF1ZXN0aW9uVHlwZShxdWVzdGlvbiksXG4gICAgICAgICAgICBuYW1lOiBxdWVzdGlvbi5uYW1lID8/IGBxdWVzdGlvbk5hbWUke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgdGl0bGU6IHF1ZXN0aW9uLnF1ZXN0aW9uLFxuICAgICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgICBjb3JyZWN0QW5zd2VyOiBbXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcblxuICAgICAgcXVlc3Rpb24ub3B0aW9ucy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHBhZ2UuZWxlbWVudHNbMF0uY2hvaWNlcy5wdXNoKG9wdGlvbi5vcHRpb24pO1xuICAgICAgICBpZiAob3B0aW9uLmlzX2NvcnJlY3QpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcGFnZS5lbGVtZW50c1swXS5jb3JyZWN0QW5zd2VyLnB1c2gob3B0aW9uLm9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBxdWl6LnBhZ2VzLnB1c2gocGFnZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcXVpejtcbiAgfVxuXG59XG4iXX0=