Merging variations of subjects, earned credit calc
This commit is contained in:
parent
09ac822911
commit
777e653a6a
3 changed files with 60 additions and 23 deletions
54
spec.js
54
spec.js
|
@ -15,12 +15,37 @@ parseExcel = async function (file) {
|
||||||
|
|
||||||
workbook.SheetNames.forEach(function (sheetName) {
|
workbook.SheetNames.forEach(function (sheetName) {
|
||||||
const rows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[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) {
|
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 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
|
} catch
|
||||||
(ex) {
|
(ex) {
|
||||||
|
@ -48,13 +73,16 @@ szak.onchange = async () => {
|
||||||
continue;
|
continue;
|
||||||
if (sdata[5].length === 0) { //Course type, only present at leaf nodes
|
if (sdata[5].length === 0) { //Course type, only present at leaf nodes
|
||||||
let tempcat = tryGetCat(sdata[1]);
|
let tempcat = tryGetCat(sdata[1]);
|
||||||
if (tempcat !== undefined)
|
if (tempcat !== undefined) {
|
||||||
cat = tempcat;
|
cat = tempcat;
|
||||||
|
if (cat.spec && cat.spec !== kotSpec && cat.spec !== kotvalSpec)
|
||||||
|
cat.neededCredit = +sdata[9];
|
||||||
|
}
|
||||||
if (sdata[2].indexOf("specializáció") === -1)
|
if (sdata[2].indexOf("specializáció") === -1)
|
||||||
continue;
|
continue;
|
||||||
const spec = new Specialization(sdata[1], sdata[2],
|
const spec = new Specialization(sdata[1], sdata[2],
|
||||||
new SubjectCategory(sdata[1] + "‑MATSZT‑A", sdata[2] + " matekos tárgyak"),
|
new SubjectCategory(sdata[1] + "‑MATSZT", sdata[2] + " matekos tárgyak", 0),
|
||||||
new SubjectCategory(sdata[1] + "‑INF‑A", sdata[2] + " infós tárgyak"));
|
new SubjectCategory(sdata[1] + "‑INF", sdata[2] + " infós tárgyak"), 0);
|
||||||
specs.push(spec);
|
specs.push(spec);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -62,13 +90,21 @@ szak.onchange = async () => {
|
||||||
console.warn("No category found!");
|
console.warn("No category found!");
|
||||||
continue;
|
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) {
|
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);
|
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);
|
console.log("Egyéb tárgyak: " + count);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
8
spec.md
8
spec.md
|
@ -1,12 +1,12 @@
|
||||||
---
|
---
|
||||||
title: SZTE specializációk
|
title: SZTE infós kreditszámoló
|
||||||
ptitle: Specializációk követelményei
|
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.
|
*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
|
## 1. Válaszd ki a képzést
|
||||||
|
|
||||||
|
|
21
specdata.js
21
specdata.js
|
@ -1,18 +1,19 @@
|
||||||
class SubjectData {
|
class SubjectData {
|
||||||
constructor(id, name, credit, category) {
|
constructor(id, name, credit, categories) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.credit = credit;
|
this.credit = credit;
|
||||||
this.category = category;
|
this.categories = categories;
|
||||||
this.grade = 0;
|
this.grade = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SubjectCategory {
|
class SubjectCategory {
|
||||||
constructor(id, name) {
|
constructor(id, name, neededCredit) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.spec = null;
|
this.spec = null;
|
||||||
|
this.neededCredit = neededCredit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,13 +28,13 @@ class Specialization {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const kotMatCat = new SubjectCategory("MK‑ALA", "Kötelező matekos tárgyak");
|
const kotMatCat = new SubjectCategory("MK‑ALA", "Kötelező matekos tárgyak", 46);
|
||||||
const kotInfCat = new SubjectCategory("MK‑SZT", "Kötelező infós tárgyak")
|
const kotInfCat = new SubjectCategory("MK‑SZT", "Kötelező infós tárgyak", 52)
|
||||||
kotSpec = new Specialization("KOT", "Kötelező tárgyak", kotMatCat, kotInfCat);
|
kotSpec = new Specialization("KOT", "Kötelező tárgyak", kotMatCat, kotInfCat);
|
||||||
const kotvalMatCat = new SubjectCategory("MK‑DIF‑MATSZT", "Kötvál matekos tárgyak");
|
const kotvalMatCat = new SubjectCategory("MK‑DIF‑MATSZT", "Kötvál matekos tárgyak", 14);
|
||||||
const kotvalInfCat = new SubjectCategory("MK‑DIF‑INF", "Kötvál infós tárgyak");
|
const kotvalInfCat = new SubjectCategory("MK‑DIF‑INF", "Kötvál infós tárgyak", 23);
|
||||||
kotvalSpec = new Specialization("MK-DIF", "Specializáció nélkül", kotvalMatCat, kotvalInfCat);
|
kotvalSpec = new Specialization("MK-DIF", "Specializáció nélkül", kotvalMatCat, kotvalInfCat);
|
||||||
kotvalEgyebCat = new SubjectCategory("MK‑DIFF‑EGYEB", "Kötvál egyéb tárgyak");
|
kotvalEgyebCat = new SubjectCategory("MK‑DIFF‑EGYEB", "Kötvál egyéb tárgyak");
|
||||||
szakdogaCat = new SubjectCategory("MK‑SZD", "Szakdolgozat");
|
szakdogaCat = new SubjectCategory("MK‑SZD", "Szakdolgozat", 20);
|
||||||
szakmaiCat = new SubjectCategory("MK‑SZG", "Szakmai gyakorlat");
|
szakmaiCat = new SubjectCategory("MK‑SZG", "Szakmai gyakorlat", 0);
|
||||||
szabvalCat = new SubjectCategory("MK‑SZV", "Szabadon választható tárgyak");
|
szabvalCat = new SubjectCategory("MK‑SZV", "Szabadon választható tárgyak", 10);
|
||||||
|
|
Loading…
Reference in a new issue