UNPKG

pedago-angular-quiz

Version:

A pedago quiz component for Angular projects

60 lines 8.7 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Model } from "survey-core"; import { ToSurveyJsJsonPipe } from "../pipes/to-survey-js-json.pipe"; import { SurveyJsSenderToResponsePipe } from "../pipes/survey-js-sneder-to-response.pipe"; import { Result } from "../models/models"; import { themeJson } from "../constantes/theme"; import * as i0 from "@angular/core"; import * as i1 from "../pipes/to-survey-js-json.pipe"; import * as i2 from "../pipes/survey-js-sneder-to-response.pipe"; import * as i3 from "survey-angular-ui"; export class PedagoAngularQuizComponent { constructor(toSurveyJsJson, surveyJsSenderToResponse) { this.toSurveyJsJson = toSurveyJsJson; this.surveyJsSenderToResponse = surveyJsSenderToResponse; this.onSubmit = new EventEmitter(); } ngOnInit() { this.initilize(); } // ngOnChanges(changes: SimpleChanges | any): void { // if(changes && changes['data']) { // const previousValue = changes.propertyName?.previousValue; // const currentValue = changes.propertyName?.currentValue; // if (previousValue != currentValue) { // this.initilize(); // } // } // } initilize() { const survey = new Model(this.toSurveyJsJson.transform(this.data.questions, this.metadata)); survey.applyTheme(themeJson(this.metadata?.theme)); survey.onComplete.add((sender, options) => { const result = new Result(this.surveyJsSenderToResponse.transform(sender), this.client, this.userId); this.onSubmit.emit(result); }); this.model = survey; } ngOnDestroy() { if (this.onSubmit) { this.onSubmit.unsubscribe(); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PedagoAngularQuizComponent, deps: [{ token: i1.ToSurveyJsJsonPipe }, { token: i2.SurveyJsSenderToResponsePipe }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PedagoAngularQuizComponent, selector: "pedago-angular-quiz", inputs: { data: "data", client: "client", userId: "userId", metadata: "metadata" }, outputs: { onSubmit: "onSubmit" }, providers: [ToSurveyJsJsonPipe, SurveyJsSenderToResponsePipe], ngImport: i0, template: "<!--style=\"position: absolute; top: 0; left: 0; right: 0; bottom: 0;\"-->\r\n<survey [model]=\"model\"></survey>\r\n", dependencies: [{ kind: "component", type: i3.SurveyComponent, selector: "survey", inputs: ["model"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PedagoAngularQuizComponent, decorators: [{ type: Component, args: [{ selector: 'pedago-angular-quiz', providers: [ToSurveyJsJsonPipe, SurveyJsSenderToResponsePipe], template: "<!--style=\"position: absolute; top: 0; left: 0; right: 0; bottom: 0;\"-->\r\n<survey [model]=\"model\"></survey>\r\n" }] }], ctorParameters: function () { return [{ type: i1.ToSurveyJsJsonPipe }, { type: i2.SurveyJsSenderToResponsePipe }]; }, propDecorators: { data: [{ type: Input }], client: [{ type: Input }], userId: [{ type: Input }], metadata: [{ type: Input }], onSubmit: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVkYWdvLWFuZ3VsYXItcXVpei5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wZWRhZ28tYW5ndWxhci1xdWl6L3NyYy9saWIvY29tcG9uZW50cy9wZWRhZ28tYW5ndWxhci1xdWl6LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BlZGFnby1hbmd1bGFyLXF1aXovc3JjL2xpYi9jb21wb25lbnRzL3BlZGFnby1hbmd1bGFyLXF1aXouY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RixPQUFPLEVBQTRCLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFPOUMsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQyxZQUNVLGNBQWtDLEVBQ2xDLHdCQUFzRDtRQUR0RCxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7UUFDbEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUE4QjtRQVB0RCxhQUFRLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7SUFVeEUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxxQ0FBcUM7SUFDckMsaUVBQWlFO0lBQ2pFLCtEQUErRDtJQUMvRCwyQ0FBMkM7SUFDM0MsMEJBQTBCO0lBQzFCLFFBQVE7SUFDUixNQUFNO0lBQ04sSUFBSTtJQUVKLFNBQVM7UUFDUCxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1RixNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQVksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5RyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDOytHQTdDVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixxS0FGMUIsQ0FBQyxrQkFBa0IsRUFBRSw0QkFBNEIsQ0FBQywwQkNWL0QsdUhBRUE7OzRGRFVhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxxQkFBcUIsYUFFcEIsQ0FBQyxrQkFBa0IsRUFBRSw0QkFBNEIsQ0FBQztvSkFHcEQsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb2RlbH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQge1RvU3VydmV5SnNKc29uUGlwZX0gZnJvbSBcIi4uL3BpcGVzL3RvLXN1cnZleS1qcy1qc29uLnBpcGVcIjtcbmltcG9ydCB7U3VydmV5SnNTZW5kZXJUb1Jlc3BvbnNlUGlwZX0gZnJvbSBcIi4uL3BpcGVzL3N1cnZleS1qcy1zbmVkZXItdG8tcmVzcG9uc2UucGlwZVwiO1xuaW1wb3J0IHtJRGF0YSwgSU1ldGFkYXRhLCBJUmVzdWx0LCBSZXN1bHR9IGZyb20gXCIuLi9tb2RlbHMvbW9kZWxzXCI7XG5pbXBvcnQge3RoZW1lSnNvbn0gZnJvbSBcIi4uL2NvbnN0YW50ZXMvdGhlbWVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGVkYWdvLWFuZ3VsYXItcXVpeicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wZWRhZ28tYW5ndWxhci1xdWl6LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbVG9TdXJ2ZXlKc0pzb25QaXBlLCBTdXJ2ZXlKc1NlbmRlclRvUmVzcG9uc2VQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBQZWRhZ29Bbmd1bGFyUXVpekNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBkYXRhITogSURhdGE7XG4gIEBJbnB1dCgpIGNsaWVudD86IHN0cmluZztcbiAgQElucHV0KCkgdXNlcklkPzogc3RyaW5nO1xuICBASW5wdXQoKSBtZXRhZGF0YT86IElNZXRhZGF0YTtcbiAgQE91dHB1dCgpIG9uU3VibWl0OiBFdmVudEVtaXR0ZXI8SVJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPElSZXN1bHQ+KCk7XG5cblxuICBtb2RlbCE6IE1vZGVsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdG9TdXJ2ZXlKc0pzb246IFRvU3VydmV5SnNKc29uUGlwZSxcbiAgICBwcml2YXRlIHN1cnZleUpzU2VuZGVyVG9SZXNwb25zZTogU3VydmV5SnNTZW5kZXJUb1Jlc3BvbnNlUGlwZVxuICApIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWxpemUoKTtcbiAgfVxuXG4gIC8vIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMgfCBhbnkpOiB2b2lkIHtcbiAgLy8gICBpZihjaGFuZ2VzICYmIGNoYW5nZXNbJ2RhdGEnXSkge1xuICAvLyAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGNoYW5nZXMucHJvcGVydHlOYW1lPy5wcmV2aW91c1ZhbHVlO1xuICAvLyAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY2hhbmdlcy5wcm9wZXJ0eU5hbWU/LmN1cnJlbnRWYWx1ZTtcbiAgLy8gICAgIGlmIChwcmV2aW91c1ZhbHVlICE9IGN1cnJlbnRWYWx1ZSkge1xuICAvLyAgICAgICB0aGlzLmluaXRpbGl6ZSgpO1xuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gfVxuXG4gIGluaXRpbGl6ZSAoKSB7XG4gICAgY29uc3Qgc3VydmV5ID0gbmV3IE1vZGVsKHRoaXMudG9TdXJ2ZXlKc0pzb24udHJhbnNmb3JtKHRoaXMuZGF0YS5xdWVzdGlvbnMsIHRoaXMubWV0YWRhdGEpKTtcbiAgICBzdXJ2ZXkuYXBwbHlUaGVtZSh0aGVtZUpzb24odGhpcy5tZXRhZGF0YT8udGhlbWUpKTtcbiAgICBzdXJ2ZXkub25Db21wbGV0ZS5hZGQoKHNlbmRlciwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBJUmVzdWx0ID0gbmV3IFJlc3VsdCh0aGlzLnN1cnZleUpzU2VuZGVyVG9SZXNwb25zZS50cmFuc2Zvcm0oc2VuZGVyKSwgdGhpcy5jbGllbnQsIHRoaXMudXNlcklkKTtcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdChyZXN1bHQpXG4gICAgfSk7XG4gICAgdGhpcy5tb2RlbCA9IHN1cnZleTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm9uU3VibWl0KSB7XG4gICAgICB0aGlzLm9uU3VibWl0LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDtcIi0tPlxyXG48c3VydmV5IFttb2RlbF09XCJtb2RlbFwiPjwvc3VydmV5PlxyXG4iXX0=