UNPKG

pedago-angular-quiz

Version:

A pedago quiz component for Angular projects

87 lines 9.46 kB
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=