Merging variations of subjects, earned credit calc

This commit is contained in:
Norbi Peti 2021-01-04 22:24:52 +01:00
parent 09ac822911
commit 777e653a6a
No known key found for this signature in database
GPG key ID: DBA4C4549A927E56
3 changed files with 60 additions and 23 deletions

54
spec.js
View file

@ -15,12 +15,37 @@ parseExcel = async function (file) {
workbook.SheetNames.forEach(function (sheetName) {
const rows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
console.log(rows);
console.log(rows[0]["Tárgykód"]);
for (const row of rows) {
//grades[rows[0]["Tárgykód"]] = new SubjectGrades(rows[0]["Tárgykód"], rows[0]["Tárgy címe, előadó neve"], "");
let id = row["Tárgykód"].replaceAll(/[-]\d{5}/g, "").replaceAll(//g, "-");
id = row["Tárgy címe, előadó neve"].indexOf("tehetséggondozó") !== -1 ? id + "-TG" : id;
const subject = subjects[id];
if (!subject) {
console.warn("Subject not found: " + id + " " + row["Tárgy címe, előadó neve"]);
continue;
}
let grade = /\((\d)\)(?!.*\(\d\))/.exec(row["Jegyek"]);
if (grade == null)
continue;
subject.grade = +grade[1];
subject.credit = +row["Kr."];
grades[id] = subject;
}
const specsSpan = document.getElementById("specs");
const total = {};
for (const sub of Object.values(grades)) {
for (const category of sub.categories) {
if (sub.grade <= 1) continue;
if (total[category.id] === undefined)
total[category.id] = sub.credit;
else
total[category.id] += sub.credit;
}
}
specsSpan.innerHTML = "";
for (const tk of Object.keys(total)) {
const cat = tryGetCat(tk);
specsSpan.innerHTML += cat.name + ": " + total[tk] + "/" + cat.neededCredit + "<br />";
}
});
} catch
(ex) {
@ -48,13 +73,16 @@ szak.onchange = async () => {
continue;
if (sdata[5].length === 0) { //Course type, only present at leaf nodes
let tempcat = tryGetCat(sdata[1]);
if (tempcat !== undefined)
if (tempcat !== undefined) {
cat = tempcat;
if (cat.spec && cat.spec !== kotSpec && cat.spec !== kotvalSpec)
cat.neededCredit = +sdata[9];
}
if (sdata[2].indexOf("specializáció") === -1)
continue;
const spec = new Specialization(sdata[1], sdata[2],
new SubjectCategory(sdata[1] + "MATSZTA", sdata[2] + " matekos tárgyak"),
new SubjectCategory(sdata[1] + "INFA", sdata[2] + " infós tárgyak"));
new SubjectCategory(sdata[1] + "MATSZT", sdata[2] + " matekos tárgyak", 0),
new SubjectCategory(sdata[1] + "INF", sdata[2] + " infós tárgyak"), 0);
specs.push(spec);
continue;
}
@ -62,13 +90,21 @@ szak.onchange = async () => {
console.warn("No category found!");
continue;
}
subjects[sdata[1]] = new SubjectData(sdata[1], sdata[2], sdata[8], cat);
let id = sdata[1].replaceAll(/[-]\d{5}/g, "").replaceAll(//g, "-");
id = sdata[2].indexOf("tehetséggondozó") !== -1 ? id + "-TG" : id;
if (!subjects[id])
subjects[id] = new SubjectData(id, sdata[2], sdata[8], [cat]);
else {
subjects[id].categories.push(cat);
/*if (subjects[id].credit !== sdata[8]) - Több különböző kredit-eloszlású verzió is lehet egy tárgyból
console.warn("Credit amount differs for " + sdata[2] + ": " + subjects[id].credit + " " + sdata[8]);*/
}
}
for (const spec of specs) {
const count = Object.values(subjects).reduce((pv, cv) => cv.category.spec === spec ? pv + 1 : pv, 0);
const count = Object.values(subjects).reduce((pv, cv) => cv.categories.reduce((pcv, ccv) => pcv || ccv.spec === spec, false) ? pv + 1 : pv, 0);
console.log(spec.name + ": " + count);
}
const count = Object.values(subjects).reduce((pv, cv) => cv.category.spec === null ? pv + 1 : pv, 0);
const count = Object.values(subjects).reduce((pv, cv) => cv.categories.reduce((pcv, ccv) => pcv || ccv.spec === null, false) ? pv + 1 : pv, 0);
console.log("Egyéb tárgyak: " + count);
};

View file

@ -1,12 +1,12 @@
---
title: SZTE specializációk
ptitle: Specializációk követelményei
title: SZTE infós kreditszámoló
ptitle: Kreditszámoló
---
Ez az oldal segít kiszámítani az egyes specializációkhoz már megszerzett krediteket, és egyéb feltételeket.
Ez az oldal segít kiszámítani (az egyes specializációkhoz is) már megszerzett krediteket, és egyéb feltételeket.
*A megadott adatok a gépeden maradnak, azokat nem kapom meg.
Az adatok tájékoztató jellegűek, a kiírt eredményekért felelősséget nem vállalok.*
Az eredmények pontosságáért felelősséget nem vállalok, hiteles tájékoztatásért fordulj a TO-hoz.*
## 1. Válaszd ki a képzést

View file

@ -1,18 +1,19 @@
class SubjectData {
constructor(id, name, credit, category) {
constructor(id, name, credit, categories) {
this.id = id;
this.name = name;
this.credit = credit;
this.category = category;
this.categories = categories;
this.grade = 0;
}
}
class SubjectCategory {
constructor(id, name) {
constructor(id, name, neededCredit) {
this.id = id;
this.name = name;
this.spec = null;
this.neededCredit = neededCredit;
}
}
@ -27,13 +28,13 @@ class Specialization {
}
}
const kotMatCat = new SubjectCategory("MKALA", "Kötelező matekos tárgyak");
const kotInfCat = new SubjectCategory("MKSZT", "Kötelező infós tárgyak")
const kotMatCat = new SubjectCategory("MKALA", "Kötelező matekos tárgyak", 46);
const kotInfCat = new SubjectCategory("MKSZT", "Kötelező infós tárgyak", 52)
kotSpec = new Specialization("KOT", "Kötelező tárgyak", kotMatCat, kotInfCat);
const kotvalMatCat = new SubjectCategory("MKDIFMATSZT", "Kötvál matekos tárgyak");
const kotvalInfCat = new SubjectCategory("MKDIFINF", "Kötvál infós tárgyak");
const kotvalMatCat = new SubjectCategory("MKDIFMATSZT", "Kötvál matekos tárgyak", 14);
const kotvalInfCat = new SubjectCategory("MKDIFINF", "Kötvál infós tárgyak", 23);
kotvalSpec = new Specialization("MK-DIF", "Specializáció nélkül", kotvalMatCat, kotvalInfCat);
kotvalEgyebCat = new SubjectCategory("MKDIFFEGYEB", "Kötvál egyéb tárgyak");
szakdogaCat = new SubjectCategory("MKSZD", "Szakdolgozat");
szakmaiCat = new SubjectCategory("MKSZG", "Szakmai gyakorlat");
szabvalCat = new SubjectCategory("MKSZV", "Szabadon választható tárgyak");
szakdogaCat = new SubjectCategory("MKSZD", "Szakdolgozat", 20);
szakmaiCat = new SubjectCategory("MKSZG", "Szakmai gyakorlat", 0);
szabvalCat = new SubjectCategory("MKSZV", "Szabadon választható tárgyak", 10);