-
Notifications
You must be signed in to change notification settings - Fork 1
/
Mathekalender Übersicht.user.js
68 lines (62 loc) · 2.32 KB
/
Mathekalender Übersicht.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// ==UserScript==
// @name Mathekalender Übersicht
// @namespace http://tampermonkey.net/
// @version 0.4
// @description try to take over the world!
// @author https://github.com/Skeeve
// @match https://www.mathekalender.de/wp/de/kalender/aufgaben/
// @match https://www.mathekalender.de/wp/calendar/challenges/
// @icon https://www.google.com/s2/favicons?sz=64&domain=mathekalender.de
// @grant none
// ==/UserScript==
(function() {
'use strict';
const aufgaben = document.querySelectorAll(`
a[href^="https://www.mathekalender.de/wp/de/kalender/aufgaben/aufgabe-"],
a[href^="https://www.mathekalender.de/wp/calendar/challenges/challenge-"]
`);
if (aufgaben == null) return;
let wpb_column = aufgaben[0];
let AntwortFehlt = ' - Antwort fehlt';
let Antwort = ' - Antwort:';
if (wpb_column.href.match(/challenges/)) {
AntwortFehlt = ' - No answer yet';
Antwort = ' - Answer:';
}
while ( !wpb_column.classList.contains('vc_row-fluid')) {
wpb_column = wpb_column.parentNode;
}
while (wpb_column.lastChild) {
wpb_column.removeChild(wpb_column.lastChild);
}
aufgaben.forEach( (aufgabe, idx) => {
wpb_column.prepend(aufgabe.parentNode);
});
aufgaben.forEach( (aufgabe, idx) => {
fetch(aufgabe.href)
.then( response => response.text() )
.then( html => {
const parser = new DOMParser();
const doc = parser.parseFromString(html, "text/html");
const selected = doc.querySelector('select[name="solution"] option[selected]')
let solElt = undefined;
if (selected === null) {
solElt = document.createElement('i');
solElt.innerText = AntwortFehlt;
} else {
solElt = document.createElement('span');
solElt.innerText = Antwort + selected.value + " -" + loesungsText(doc, selected.index);
}
aufgabe.parentNode.append(solElt);
})
});
function loesungsText(doc, index) {
let text = '';
doc.querySelectorAll('h4').forEach( h4 => {
if (h4.textContent != 'Antwortmöglichkeiten:'
&& h4.textContent != 'Possible answers:') return;
text = h4.parentNode.querySelectorAll('ol li')[index].textContent;
});
return text;
}
})();