// This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . /** * @package qtype_algebra * @copyright 2017 Jean-Michel Vedrine * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ angular.module('mm.addons.qtype_algebra') /** * Short answer question handlers. * * @module mm.addons.qtype_algebra * @ngdoc service * @name $mmaQtypeAlgebraHandler */ .factory('$mmaQtypeAlgebraHandler', function($mmUtil) { var self = {}; /** * Check if a response is complete. * * @param {Object} question Question. * @param {Object} answers Question answers (without prefix). * @return {Mixed} True if complete, false if not complete, -1 if cannot determine. */ self.isCompleteResponse = function(question, answers) { return answers['answer'] || answers['answer'] === 0; }; /** * Whether or not the module is enabled for the site. * * @return {Boolean} */ self.isEnabled = function() { return true; }; /** * Check if a student has provided enough of an answer for the question to be graded automatically, * or whether it must be considered aborted. * * @param {Object} question Question. * @param {Object} answers Question answers (without prefix). * @return {Mixed} True if gradable, false if not gradable, -1 if cannot determine. */ self.isGradableResponse = function(question, answers) { return self.isCompleteResponse(question, answers); }; /** * Check if two responses are the same. * * @param {Object} question Question. * @param {Object} prevAnswers Previous answers. * @param {Object} newAnswers New answers. * @return {Boolean} True if same, false otherwise. */ self.isSameResponse = function(question, prevAnswers, newAnswers) { return $mmUtil.sameAtKeyMissingIsBlank(prevAnswers, newAnswers, 'answer'); }; /** * Get the directive. * * @param {Object} question The question. * @return {String} Directive's name. */ self.getDirectiveName = function(question) { return 'mma-qtype-algebra'; }; return self; });