File
Methods
getQuestion
|
getQuestion(questionId: string)
|
Returns: Observable<any>
|
getQuestions
|
getQuestions(questionIds: string[])
|
Returns: Observable<any>
|
getQuestionData
|
getQuestionData(questionId: any)
|
Returns: void
|
setQuestionMap
|
setQuestionMap(key: any, value: any)
|
Returns: void
|
clearQuestionMap
|
clearQuestionMap()
|
Returns: void
|
getQuestionSet
|
getQuestionSet(identifier: any)
|
Returns: void
|
getAllQuestionSet
|
getAllQuestionSet(identifiers: string[])
|
Returns: Observable<any>
|
Private contentCsService
|
contentCsService: any
|
playerService
|
playerService: any
|
Private questionMap
|
questionMap: any
|
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
import * as _ from 'lodash-es';
import { QuestionCursor } from '@project-sunbird/sunbird-quml-player';
import { EditorCursor } from '@project-sunbird/sunbird-collection-editor';
import { CsModule } from '@project-sunbird/client-services';
import { PublicPlayerService } from '@sunbird/public';
import { map } from 'rxjs/operators';
import { forkJoin } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { CsLibInitializerService } from './../../../../service/CsLibInitializer/cs-lib-initializer.service';
@Injectable({ providedIn: 'root' })
export class QumlPlayerService implements QuestionCursor, EditorCursor {
private questionMap = new Map();
private contentCsService: any;
constructor(public csLibInitializerService: CsLibInitializerService,
public playerService: PublicPlayerService,
private http: HttpClient) {
if (!CsModule.instance.isInitialised) {
this.csLibInitializerService.initializeCs();
}
this.contentCsService = CsModule.instance.contentService;
}
getQuestion(questionId: string): Observable<any> {
if (_.isEmpty(questionId)) { return of({}); }
const question = this.getQuestionData(questionId);
if (question) {
return of({questions : _.castArray(question)});
} else {
return this.contentCsService.getQuestionList(_.castArray(questionId));
}
}
getQuestions(questionIds: string[]): Observable<any> {
return this.contentCsService.getQuestionList(questionIds);
}
getQuestionData(questionId) {
return this.questionMap.get(_.first(_.castArray(questionId))) || undefined;
}
setQuestionMap(key, value) {
this.questionMap.set(key, value);
}
clearQuestionMap() {
this.questionMap.clear();
}
getQuestionSet(identifier) {
const hierarchy = this.http.get('action/questionset/v1/hierarchy/' + identifier + '?mode=edit');
const questionSet = this.http.get(`action/questionset/v1/read/${identifier}?fields=instructions`);
return (
forkJoin([hierarchy, questionSet]).pipe(
map(res => {
let questionSet = _.get(res[0], 'result.questionSet');
const instructions = _.get(res[1], 'result.questionset.instructions');
if (questionSet && instructions) {
// tslint:disable-next-line:no-unused-expression
questionSet['instructions'] = instructions;
}
return {questionSet};
})
));
}
getAllQuestionSet(identifiers: string[]): Observable<any> {
return of({});
}
}