UNPKG

magister.js

Version:

A JavaScript implementation of the Magister 6 API

171 lines (137 loc) 3.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = _interopRequireDefault(require("lodash")); var _assert = _interopRequireDefault(require("assert")); var _magisterThing = _interopRequireDefault(require("./magisterThing")); var _util = require("./util"); var _gradeType = _interopRequireDefault(require("./gradeType")); var _gradePeriod = _interopRequireDefault(require("./gradePeriod")); var _class = _interopRequireDefault(require("./class")); var _person = _interopRequireDefault(require("./person")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class Grade extends _magisterThing.default { /** * @private * @param {Magister} magister * @param {Object} raw */ constructor(magister, raw) { super(magister); /** * Should be set by {@link Course.grades}! * @type {String} * @private */ this._fillUrl = undefined; /** * @type {String} * @readonly */ this.id = (0, _util.toString)(raw.CijferId); /** * @type {String} * @readonly */ this.grade = raw.CijferStr; /** * @type {Boolean} * @readonly */ this.passed = raw.IsVoldoende; /** * @type {Date} * @readonly */ this.dateFilledIn = (0, _util.parseDate)(raw.DatumIngevoerd); /** * @type {Class} * @readonly */ this.class = new _class.default(magister, raw.Vak); /** * @type {Boolean} * @readonly */ this.atLaterDate = raw.Inhalen; /** * @type {Boolean} * @readonly */ this.exemption = raw.Vrijstelling; /** * @type {Boolean} * @readonly */ this.counts = raw.TeltMee; /** * @type {GradePeriod} * @readonly * @default null */ this.period = raw.Periode == null ? null : new _gradePeriod.default(magister, raw.Periode); /** * @type {GradeType} * @readonly * @default null */ this.type = raw.CijferKolom == null ? null : new _gradeType.default(magister, raw.CijferKolom); /** * @type {String} * @readonly */ this.assignmentId = (0, _util.toString)(raw.CijferKolomIdEloOpdracht); /** * @type {Person} * @readonly */ this.teacher = new _person.default(magister, { Docentcode: raw.Docent }, 3); /** * @type {Boolean} * @readonly */ this.classExemption = raw.VakDispensatie || raw.VakVrijstelling; /** * Value will be set by {@link fill} * @type {String} * @default '' */ this.description = ''; /** * Value will be set by {@link fill} * @type {String} * @default 0 */ this.weight = 0; /** * Value will be set by {@link fill} * @type {Date} * @default undefined */ this.testDate = undefined; } // TODO: add ability to fill persons /** * @returns {Promise<Grade>} */ fill() { if (this._filled) { return Promise.resolve(this); } (0, _assert.default)(this._fillUrl != null, 'this._fillUrl not set'); return this._magister.http.get(this._fillUrl).then(res => res.json()).then(res => { this.testDate = (0, _util.parseDate)(res.WerkinformatieDatumIngevoerd); this.description = _lodash.default.trim(res.WerkInformatieOmschrijving); this.weight = Number.parseInt(res.Weging, 10) || 0; this.type.level = res.KolomNiveau; this.type.description = _lodash.default.trim(res.KolomOmschrijving); this.filled = true; return this; }); } } var _default = Grade; exports.default = _default;