Kinetic.Exercise = function(config){ Kinetic.Group.call(this, config); this.data = config.data; this.containers = new Array(); mediaElements = new Array(); this.initExercise(); } Kinetic.Exercise.prototype = { initExercise: function(){ this.fillBg(); this.initContainers(); this.initMedia(); this.createExercise(); }, fillBg: function(){ var bgLayer = new Kinetic.Layer(); var bg = new Kinetic.Rect({ 'x': 0, 'y': 0, 'width': projectData.stageWidth, 'height': projectData.stageHeight }); bgLayer.add(bg); stage.add(bgLayer); }, initContainers: function(){ for (var i = 0; i < this.data.containers.length; i++){ this.createContainer(this.data.containers[i]); } }, createContainer: function(containerData){ this.containers[containerData.name] = new Kinetic.Layer({ 'x': containerData.position.x, 'y': containerData.position.y }); stage.add(this.containers[containerData.name]); }, initMedia: function(){ for (var i = 0; i < this.data.media.length; i++){ this.createMedia(this.data.media[i]); } }, createMedia: function(mediaData){ var media = new Kinetic.Media({ 'mediaData': mediaData, 'parent': this.containers[mediaData.container] }); mediaElements.push(media); }, createExercise: function(){ // exercise settings this.setSettings(); // create exercise this.exercise = null; if (this.data.type == 'multiplechoice'){ this.exercise = new Kinetic.MultipleChoice({ 'data': this.data }); } else if (this.data.type == 'connect'){ this.exercise = new Kinetic.Connect({ 'data': this.data }); } else if (this.data.type == 'blanco'){ this.exercise = new Kinetic.Blanco({ 'data': this.data }); } else if (this.data.type == 'sortableList'){ this.exercise = new Kinetic.SortableList({ 'data': this.data }); } else if (this.data.type == 'draganddrop'){ if (this.data.dragAndDropType == 'TextToTextColumn'){ this.exercise = new Kinetic.TextToTextColumn({ 'data': this.data }); } else if (this.data.dragAndDropType == 'hotspot' || this.data.dragAndDropType == 'imageHotspot'){ this.exercise = new Kinetic.Hotspot({ 'data': this.data }); } } else if (this.data.type == 'videohotspot'){ this.exercise = new Kinetic.VideoHotspot({ 'data': this.data }); } this.containers[this.data.exerciseContainer].add(this.exercise); this.containers[this.data.exerciseContainer].draw(); this.exercise.addedToStage(); }, checkAnswer: function(){ this.exercise.checkAnswer(); // if there are pauseForQuestion videos, resume playback for (var i = 0; i < mediaElements.length; i++){ if (mediaElements[i].mediaData.type == 'new_video'){ for (var j = 0; j < mediaElements[i].mediaData.parameters.length; j++){ var key = mediaElements[i].mediaData.parameters[j].key; if (key == 'pauseForQuestion'){ mediaElements[i].removeTimeupdateListener(); $('#videoPlayer_'+mediaElements[i].mediaData.id)[0].play(); // DVR - enable controls $('#videoPlayer_'+mediaElements[i].mediaData.id)[0].setAttribute("controls", "controls"); } } } } // save answer // if (eqSettings.saveAnswer){ // var exerciseId = this.exercise.data.id; // var correct = this.exercise.correct; // // savingInProgress++; // // $.post('eq/index/saveanswer', {'testId': testId, 'exerciseId': exerciseId, 'correct': correct, 'chapterId': eqSettings.chapterId}, function(data){ // // updateProgressBar(); //BD Ik vind deze functie niet?!? // savingInProgress--; // }); // } if (eqSettings.saveAnswer){ var url = 'eq/index/saveanswer'; if (eqSettings.customSaveAnswer) { var url = eqSettings.customSaveAnswerUrl; } var exerciseId = this.exercise.data.id; var correct = this.exercise.correct; savingInProgress++; $.post(url, {'testId': testId, 'exerciseId': exerciseId, 'correct': correct, 'chapterId': eqSettings.chapterId}, function(data){ savingInProgress--; }); } }, setSettings: function(){ exerciseSettings = globalExerciseSettings[this.data.type]; var exerciseSettingsData = this.data.settings; if (exerciseSettingsData != null){ for (var param in exerciseSettingsData){ exerciseSettings[param] = exerciseSettingsData[param]; } } } } Kinetic.Util.extend(Kinetic.Exercise, Kinetic.Group);