UNPKG

magister.js

Version:

A JavaScript implementation of the Magister 6 API

130 lines (103 loc) 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _magisterThing = _interopRequireDefault(require("./magisterThing")); var _assignmentVersion = _interopRequireDefault(require("./assignmentVersion")); var _file = _interopRequireDefault(require("./file")); var _person = _interopRequireDefault(require("./person")); var _util = require("./util"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class Assignment extends _magisterThing.default { /** * @private * @param {Magister} magister * @param {Object} raw */ constructor(magister, raw) { super(magister); /** * @type {String} * @readonly */ this.id = (0, _util.toString)(raw.Id); /** * @type {String} * @readonly */ this.name = raw.Titel; /** * @type {String} * @readonly */ this.description = raw.Omschrijving; /** * @type {Object} * @readonly */ this.class = raw.Vak; // TODO /** * @type {Date} * @readonly */ this.deadline = (0, _util.parseDate)(raw.InleverenVoor); /** * @type {Date} * @readonly */ this.handedInOn = (0, _util.parseDate)(raw.IngeleverdOp); /** * @type {File[]} * @readonly */ this.files = raw.Bijlagen.map(f => new _file.default(magister, undefined, f)); /** * @type {Person[]} * @readonly */ this.teachers = raw.Docenten != null ? raw.Docenten.map(p => new _person.default(magister, p)) : []; /** * @type {String[]} * @readonly */ this.versionIds = raw.VersieNavigatieItems.map(v => (0, _util.toString)(v.Id)); /** * @type {String} * @readonly */ this.grade = raw.Beoordeling; /** * @type {Date} * @readonly */ this.markedOn = (0, _util.parseDate)(raw.BeoordeeldOp); /** * @type {Boolean} * @readonly */ this.handInAgain = raw.OpnieuwInleveren; /** * @type {Boolean} * @readonly */ this.finished = raw.Afgesloten; /** * @type {Boolean} * @readonly */ this.canHandIn = raw.MagInleveren; } /** * @returns {Promise<AssignmentVersion[]>} */ versions() { const promises = this.versionIds.map(id => { const url = `${this._magister._personUrl}/opdrachten/versie/${id}`; return this._magister.http.get(url).then(res => res.json()).then(raw => new _assignmentVersion.default(this._magister, raw)); }); return Promise.all(promises); } } var _default = Assignment; exports.default = _default;