aboutsummaryrefslogtreecommitdiff
path: root/mobile_src/handlers.js
diff options
context:
space:
mode:
Diffstat (limited to 'mobile_src/handlers.js')
-rw-r--r--mobile_src/handlers.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/mobile_src/handlers.js b/mobile_src/handlers.js
new file mode 100644
index 0000000..a898ccb
--- /dev/null
+++ b/mobile_src/handlers.js
@@ -0,0 +1,83 @@
+// (C) Copyright 2015 Martin Dougiamas
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+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;
+});