UNPKG

unserver-unify

Version:

155 lines (150 loc) 4.53 kB
angular.module('bamboo.course').controller('IdiomFillBlankChapterCtrl', function($scope, $stateParams, ApiService) { this.cid = $stateParams.cid; console.log("--- IdiomChapterCtrl"); var self = this; var resUrl = this.resUrl = ApiService.SHOST + '/lcourse/' + this.cid + '/resources/'; this.index = 0; this.init = function(chapter) { console.log(chapter); self.chapter = {}; self.chapter = chapter; resUrl = self.resUrl = ApiService.SHOST + '/lcourse/' + self.chapter.cid + '/resources/'; console.log(self.chapter); if (!self.chapter.size) { self.chapter.size = 4; } initIdioms(true); } function generateRandomIdx(len, flag) { var randomIdxList = []; if (!flag && self.randomIdxList) { return self.randomIdxList; } var tarray = []; for (var i = 0; i < len; i++) { tarray.push(i); } var _len = 4; if (len < 4) { _len = len; } var selected = []; for (var i = 0; i < _len; i++) { var index = _.random(0, tarray.length - 1); console.log(index); selected.push(tarray[index]); tarray.splice(index, 1); } selected.sort(); console.log(selected); for (var i = 0; i < len; i++) { if (selected.indexOf(i) < 0) { randomIdxList.push(-1); } else { randomIdxList.push(_.random(0, self.chapter.size-1)); } } return randomIdxList; } function initIdioms(flag) { self.answers = []; self.non_answers = []; self.dropIdiomMap = {}; self.correctCount = 0; self.wrongCount = 0; self.randomIdxList = generateRandomIdx(self.chapter.ppts.length, flag); console.log(self.randomIdxList); self.idioms = self.chapter.ppts.map(function(o, idx) { // var blank_idx = _.random(0, 3); var blank_idx = self.randomIdxList[idx]; var idiom_arr = o.word.split(''); var idiom_answer; if (blank_idx > -1) { idiom_answer = idiom_arr[blank_idx]; idiom_arr[blank_idx] = ""; self.answers.push(idiom_answer); } // var idiom_answer = idiom_arr[blank_idx]; self.non_answers = self.non_answers.concat(idiom_arr); return { q: idiom_arr, answer: idiom_answer, answer_idx: blank_idx, idx: idx }; }); self.wrongAnswer = getRamdomAnswers(self.non_answers); self.answers = self.answers.concat(self.wrongAnswer); console.log(self.answers); self.answers = _.sortBy(self.answers).map(function(o) { return { text: o } }); console.log(self.answers); initIdiomMap(); } function getRamdomAnswers(non_answers) { if (self.wrongAnswer) { return self.wrongAnswer; } return _.sampleSize(non_answers.filter(function(o) { return o != ""; }), 2); } function initIdiomMap() { for (var i = 0; i < 10; i++) { self.dropIdiomMap[i] = {}; } } this.submit = function() { mark(self.dropIdiomMap, self.idioms); self.submitted = true; } this.reset = function() { initIdioms(); self.submitted = false; } this.continue = function() { initIdioms(true); self.submitted = false; } function mark(userAnswerMap, idiomsList) { console.log(userAnswerMap); console.log(idiomsList); var LEN = idiomsList.length; for (var i = 0; i < LEN; i++) { var userAnswer = userAnswerMap[i] || {}; var idiom = idiomsList[i] || {}; console.log(idiom); if (idiom.answer_idx > -1) { if (idiom.answer === userAnswer.text) { self.correctCount++; userAnswer.correct = true; } else { userAnswer.correct = false; self.wrongCount++; } } } } $scope.startCallback = function(event, ui, title) { console.log('You started draggin: ' + title.title); $scope.draggedTitle = title.title; }; $scope.stopCallback = function(event, ui) { console.log('Why did you stop draggin me?'); }; $scope.dragCallback = function(event, ui) { console.log('hey, look I`m flying'); }; $scope.dropCallback = function(event, ui) { console.log('hey, you dumped me :-(', $scope.draggedTitle); }; $scope.overCallback = function(event, ui) { console.log('Look, I`m over you'); }; $scope.outCallback = function(event, ui) { console.log('I`m not, hehe'); }; });