/Gradebook/Scripts/app/class.result.js
JavaScript | 46 lines | 37 code | 6 blank | 3 comment | 6 complexity | a45158b6818840282fb71b5161ee543f MD5 | raw file
- /// <reference path="../knockout-2.2.1.debug.js" />
- /// <reference path="../underscore-ko-1.2.2.js" />
- /// <reference path="../underscore.js" />
-
- function ClassResult(data) {
- this.studentId = data.StudentId;
- this.studentName = data.StudentName;
-
- var self = this;
- self.results = ko.observableArray();
- if (data.Results != null) {
- this.results($.map(data.Results, function (item) {
- var taskResult = new TaskResult(item);
- taskResult.result.subscribe(function () {
- self.results.notifySubscribers();
- });
- return new TaskResult(item);
- }));
- }
- self.rate = ko.computed(function () {
- var results = self.results();
- if (_.isNull(results) || _.isEmpty(results)) return 0;
-
- var tasksCount = results.length;
- var rateSum = _.reduce(results, function (memo, item) {
- var result = item.totalMarks > 1
- ? item.result() * 100 / item.totalMarks
- : item.result() * 100;
- return memo + result;
- }, 0);
-
- return tasksCount > 0 ? Math.round(rateSum / tasksCount) : 0;
- });
- self.hasResults = ko.computed(function(){
- var results = self.results();
- return !_.isNull(results) && !_.isEmpty(results);
- });
-
- self.getGrades = function () {
- if (!self.hasResults()) return [];
-
- return _.map(self.results(), function (item) {
- return item.toGrade();
- });
- };
- }