Process subjects with the correct categories
Fixed some issues with the input data
This commit is contained in:
parent
e92c0b1a4f
commit
ab898d2344
5 changed files with 149 additions and 26 deletions
|
@ -69,7 +69,8 @@ Programtervező informatikus BSc_N (2017) [BSZKPTI-N1] mintatanterv,,,,,,,,,,,,,
|
|||
◼◼◼,IBK507E‑00001,Bonyolultságelmélet (tehetséggondozó program),5,Kötelezően választható,Előadás,2,,2,,,,,,,,,,,,,,,
|
||||
◼◼,TE‑IBK507G,Bonyolultságelmélet,5,Kötelező,,,,2,2,,1,,,,,,,,,,,,
|
||||
◼◼◼,IBK507G,Bonyolultságelmélet gyakorlat,5,Kötelezően választható,Gyakorlat,1,,2,,,,,,,,,,,,,,,
|
||||
◼◼◼,IBK507G‑00001,Bonyolultságelmélet gyakorlat (tehetséggondozó program),5,Kötelezően választható,Gyakorlat,1,,2,,,,,MK‑SZT,Szakmai törzsanyag,,Kötelező,,,,52,52,,
|
||||
◼◼◼,IBK507G‑00001,Bonyolultságelmélet gyakorlat (tehetséggondozó program),5,Kötelezően választható,Gyakorlat,1,,2,,,,
|
||||
,MK‑SZT,Szakmai törzsanyag,,Kötelező,,,,52,52,,
|
||||
◼,TT‑IB402,Operációs rendszerek,,Kötelező,,,,4,4,2,,,,,,,,,,,,,
|
||||
◼◼,TE‑IB402e,Operációs rendszerek,2,Kötelező,,,,2,2,,1,,,,,,,,,,,,
|
||||
◼◼◼,IB402e‑00001,Operációs rendszerek (tehetséggondozó program),2,Kötelezően választható,Előadás,2,,2,,,,,,,,,,,,,,,
|
||||
|
@ -133,7 +134,8 @@ Programtervező informatikus BSc_N (2017) [BSZKPTI-N1] mintatanterv,,,,,,,,,,,,,
|
|||
◼◼◼,IB042e‑00001,Digitális képfeldolgozás (tehetséggondozó program),6,Kötelezően választható,Előadás,2,,2,,,,,,,,,,,,,,,
|
||||
◼◼,TE‑IB042g,Digitális képfeldolgozás,6,Kötelező,,,,2,2,,1,,,,,,,,,,,,
|
||||
◼◼◼,IB042g‑00002,Digitális képfeldolgozás gyakorlat (tehetséggondozó program),6,Kötelezően választható,Labor,1,,2,,,,,,,,,,,,,,,
|
||||
◼◼◼,IB042g,Digitális képfeldolgozás gyakorlat,6,Kötelezően választható,Labor,1,,2,,,,,MK‑DSZ,Differenciált szakmai ismeretek,,Kötelező,,,,52,52,,
|
||||
◼◼◼,IB042g,Digitális képfeldolgozás gyakorlat,6,Kötelezően választható,Labor,1,,2,,,,
|
||||
,MK‑DSZ,Differenciált szakmai ismeretek,,Kötelező,,,,52,52,,
|
||||
◼,MK‑DIF‑MATSZT,Differenciált matematikai és számítástudományi ismeretek,,Kötelező,,,,,14,,,,,,,,,,,,,,
|
||||
◼◼,TT‑MBNXK112,Diszkrét matematika II.,2,Kötelezően választható,,,,,5,2,,,,,,,,,,,,,
|
||||
◼◼◼,TE‑MBNXK112E,Diszkrét matematika II. előadás,2,Kötelezően választható,,,,,2,,1,,,,,,,,,,,,
|
||||
|
@ -832,7 +834,8 @@ Programtervező informatikus BSc_N (2017) [BSZKPTI-N1] mintatanterv,,,,,,,,,,,,,
|
|||
◼◼◼◼◼,IB470G,Mobil alkalmazásfejlesztés,3,Kötelezően választható,Gyakorlat,2,,2,,,,,,,,,,,,,,,
|
||||
◼◼◼◼,TE‑IB472E,Multiplatform alkalmazásfejlesztés C++-ban,,Kötelezően választható,,,,,3,,1,,,,,,,,,,,,
|
||||
◼◼◼◼◼,IB472E,Multiplatform alkalmazásfejlesztés C++-ban,4,Kötelezően választható,Előadás,2,,3,,,,,,,,,,,,,,,
|
||||
◼◼◼◼,IB001e‑00055,Képfeldolgozó Nyári Iskola,,Kötelezően választható,Előadás,2,,3,,,,,MK‑SZV,Szabadon választott,,Szabadon választható,,,,10,10,,
|
||||
◼◼◼◼,IB001e‑00055,Képfeldolgozó Nyári Iskola,,Kötelezően választható,Előadás,2,,3,,,,
|
||||
,MK‑SZV,Szabadon választott,,Szabadon választható,,,,10,10,,
|
||||
◼,TT‑BSZV00,Biológia SZV,,Nincs megadva,,,,0,0,,,,,,,,,,,,,,
|
||||
◼◼,TE‑BSZV00,Biológia SZV,,Szabadon választható,,,,2,2,,1,,,,,,,,,,,,
|
||||
◼◼◼,BSZV00‑00325,molekuláris biológia 2 BSc szeminárium,,Szabadon választható,Előadás,2,,2,,,,,,,,,,,,,,,
|
||||
|
@ -1509,9 +1512,11 @@ Programtervező informatikus BSc_N (2017) [BSZKPTI-N1] mintatanterv,,,,,,,,,,,,,
|
|||
◼◼◼,XN0211‑02631,Német B2 gazdasági szaknyelv 1x2,,Szabadon választható,Gyakorlat,2,,2,,,,,,,,,,,,,,,
|
||||
◼◼◼,XN0141‑02637,Német idegenforgalmi szaknyelv B2 1. szint 2x2,,Szabadon választható,Gyakorlat,4,,4,,,,,,,,,,,,,,,
|
||||
◼◼◼,XN0141‑02642,Angol idegenforgalmi szaknyelv B2 1. szint 2x2,,Szabadon választható,Gyakorlat,4,,4,,,,,,,,,,,,,,,
|
||||
◼◼◼,XN0141‑02646,Angol idegenforgalmi szaknyelv B2 2. szint 2x2,,Szabadon választható,Gyakorlat,4,,4,,,,,MK‑SZD,Szakdolgozat,,Kötelező,,,,20,20,,
|
||||
◼◼◼,XN0141‑02646,Angol idegenforgalmi szaknyelv B2 2. szint 2x2,,Szabadon választható,Gyakorlat,4,,4,,,,
|
||||
,MK‑SZD,Szakdolgozat,,Kötelező,,,,20,20,,
|
||||
◼,TE‑IB3000G,Szakdolgozat készítése,5,Kötelező,,,,10,10,,1,,,,,,,,,,,,
|
||||
◼◼,IB3000G,Szakdolgozat készítése 1.,5,Kötelező,Gyakorlat,2,,10,,,,,,,,,,,,,,,
|
||||
◼,TE‑IB3001G,Szakdolgozat készítése,6,Kötelező,,,,10,10,,1,,,,,,,,,,,,
|
||||
◼◼,IB3001G,Szakdolgozat készítése 2.,6,Kötelező,Gyakorlat,4,,10,,,,,MK‑SZG,Szakmai gyakorlat,,Kötelező,,,,,,,1
|
||||
◼◼,IB3001G,Szakdolgozat készítése 2.,6,Kötelező,Gyakorlat,4,,10,,,,
|
||||
,MK‑SZG,Szakmai gyakorlat,,Kötelező,,,,,,,1
|
||||
◼,IB000pi17G,Szakmai gyakorlat (2017-től felvettek részére),0,Kötelező,Gyakorlat,,320,0,,,,,,,,,,,,,,,
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 72.
|
91
spec.js
91
spec.js
|
@ -1,36 +1,91 @@
|
|||
const szak = document.getElementById("szak");
|
||||
const lk = document.getElementById("leckekonyv");
|
||||
parseExcel = function (file) {
|
||||
const reader = new FileReader();
|
||||
promiseOnLoad = async loadable => new Promise(((resolve, reject) => (loadable.onload = ev => resolve(ev)) && (loadable.onerror = ev => reject(ev))));
|
||||
parseExcel = async function (file) {
|
||||
try {
|
||||
const reader = new FileReader();
|
||||
const evpr = promiseOnLoad(reader);
|
||||
reader.readAsBinaryString(file);
|
||||
const ev = await evpr;
|
||||
const data = ev.target.result;
|
||||
|
||||
reader.onload = function (e) {
|
||||
const data = e.target.result;
|
||||
const workbook = XLSX.read(data, {
|
||||
type: 'binary'
|
||||
});
|
||||
|
||||
|
||||
workbook.SheetNames.forEach(function (sheetName) {
|
||||
const XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
|
||||
const json_object = JSON.stringify(XL_row_object);
|
||||
console.log(json_object);
|
||||
console.log(XL_row_object[0]["Tárgykód"]);
|
||||
|
||||
})
|
||||
|
||||
};
|
||||
|
||||
reader.onerror = function (ex) {
|
||||
});
|
||||
} catch
|
||||
(ex) {
|
||||
console.log(ex);
|
||||
};
|
||||
|
||||
reader.readAsBinaryString(file);
|
||||
};
|
||||
lk.onchange = ev => parseExcel(lk.files[0]);
|
||||
szak.onchange = async ev => {
|
||||
}
|
||||
}
|
||||
lk.onchange = async () => await parseExcel(lk.files[0]);
|
||||
szak.onchange = async () => {
|
||||
if (szak.value === "nope") return;
|
||||
let response = await fetch(document.URL.substr(0, document.URL.lastIndexOf('/')) + '/data/' + szak.value + "_bsc.csv");
|
||||
let data = await response.text();
|
||||
let obj = Papa.parse(data);
|
||||
console.log(obj);
|
||||
const szakError = document.getElementById("szakError");
|
||||
szakError.innerText = "";
|
||||
if (obj.errors.length > 0) {
|
||||
for (const error of obj.errors)
|
||||
szakError.innerHTML += error.type + " - " + error.code + ": " + error.message + "<br />";
|
||||
return;
|
||||
}
|
||||
console.log(obj.data);
|
||||
let cat;
|
||||
for (let i = 2; i < obj.data.length; i++) { //2: Skip header
|
||||
const sdata = obj.data[i];
|
||||
if (sdata.length < 10)
|
||||
continue;
|
||||
if (sdata[5].length === 0) { //Course type, only present at leaf nodes
|
||||
let tempcat = tryGetCat(sdata[1]);
|
||||
if (tempcat !== undefined)
|
||||
cat = tempcat;
|
||||
if (sdata[2].indexOf("specializáció") === -1)
|
||||
continue;
|
||||
const spec = new Specialization(sdata[1], sdata[2],
|
||||
new SubjectCategory(sdata[1] + "‑MATSZT‑A", sdata[2] + " matekos tárgyak"),
|
||||
new SubjectCategory(sdata[1] + "‑INF‑A", sdata[2] + " infós tárgyak"));
|
||||
specs.push(spec);
|
||||
continue;
|
||||
}
|
||||
if (cat === undefined) {
|
||||
console.warn("No category found!");
|
||||
continue;
|
||||
}
|
||||
subjects.push(new SubjectData(sdata[1], sdata[2], sdata[8], cat));
|
||||
}
|
||||
const specsSpan = document.getElementById("specs");
|
||||
specsSpan.innerHTML = "";
|
||||
for (const spec of specs) {
|
||||
const count = subjects.reduce((pv, cv) => cv.category.spec === spec ? pv + 1 : pv, 0);
|
||||
specsSpan.innerHTML += spec.name + ": " + count + "<br />";
|
||||
}
|
||||
};
|
||||
|
||||
function tryGetCat(categoryID) {
|
||||
const spec = specs.find(spec => spec.matcat.id === categoryID || spec.infcat.id === categoryID)
|
||||
return (spec && (spec.matcat.id === categoryID ? spec.matcat : spec.infcat)) || [
|
||||
kotvalEgyebCat,
|
||||
szakdogaCat,
|
||||
szakmaiCat,
|
||||
szabvalCat
|
||||
].find(cat => cat.id === categoryID);
|
||||
}
|
||||
|
||||
let subjects = [];
|
||||
let specs = [
|
||||
kotSpec,
|
||||
kotvalSpec
|
||||
];
|
||||
(async () => {
|
||||
await szak.onchange(undefined);
|
||||
await lk.onchange(undefined);
|
||||
}
|
||||
)();
|
||||
|
|
6
spec.md
6
spec.md
|
@ -11,6 +11,7 @@ Az adatok tájékoztató jellegűek, a kiírt eredményekért felelősséget nem
|
|||
## 1. Válaszd ki a képzést
|
||||
|
||||
<label>
|
||||
Képzés:
|
||||
<select style="color: black" id="szak">
|
||||
<option selected value="nope">---- Szakok ----</option>
|
||||
<option value="gi">gazdaságinformatikus</option>
|
||||
|
@ -18,6 +19,7 @@ Az adatok tájékoztató jellegűek, a kiírt eredményekért felelősséget nem
|
|||
<option value="mi">mérnökinformatikus</option>
|
||||
</select>
|
||||
</label>
|
||||
<span id="szakError" style="color: red"></span>
|
||||
|
||||
## 2. Neptun leckekönyv export
|
||||
Szükség lesz a Neptunban a Tanulmányok -> Leckekönyv -> Minden félév -> XLS export (ikon jobb oldalt) eredményére.
|
||||
|
@ -27,7 +29,7 @@ Szükség lesz a Neptunban a Tanulmányok -> Leckekönyv -> Minden félév -> XL
|
|||
## 3. Teljesítések:
|
||||
<span id="specs"></span>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.6/jszip.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.6/xlsx.js"></script>
|
||||
<script src="xlsx.full.min.js"></script>
|
||||
<script src="papaparse.min.js"></script>
|
||||
<script src="specdata.js"></script>
|
||||
<script src="spec.js"></script>
|
38
specdata.js
Normal file
38
specdata.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
class SubjectData {
|
||||
constructor(id, name, credit, category) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.credit = credit;
|
||||
this.category = category;
|
||||
}
|
||||
}
|
||||
|
||||
class SubjectCategory {
|
||||
constructor(id, name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.spec = null;
|
||||
}
|
||||
}
|
||||
|
||||
class Specialization {
|
||||
constructor(id, name, matcat, infcat) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.matcat = matcat;
|
||||
matcat.spec = this;
|
||||
this.infcat = infcat;
|
||||
infcat.spec = this;
|
||||
}
|
||||
}
|
||||
|
||||
const kotMatCat = new SubjectCategory("MK‑ALA", "Kötelező matekos tárgyak");
|
||||
const kotInfCat = new SubjectCategory("MK‑SZT", "Kötelező infós tárgyak")
|
||||
kotSpec = new Specialization("KOT", "Kötelező tárgyak", kotMatCat, kotInfCat);
|
||||
const kotvalMatCat = new SubjectCategory("MK‑DIF‑MATSZT", "Kötvál matekos tárgyak");
|
||||
const kotvalInfCat = new SubjectCategory("MK‑DIF‑INF", "Kötvál infós tárgyak");
|
||||
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");
|
||||
szakdogaCat = new SubjectCategory("MK‑SZD", "Szakdolgozat");
|
||||
szakmaiCat = new SubjectCategory("MK‑SZG", "Szakmai gyakorlat");
|
||||
szabvalCat = new SubjectCategory("MK‑SZV", "Szabadon választható tárgyak");
|
23
xlsx.full.min.js
vendored
Normal file
23
xlsx.full.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue