import
This commit is contained in:
commit
5c55b6f921
5 changed files with 275 additions and 0 deletions
19
directory.css
Normal file
19
directory.css
Normal file
|
@ -0,0 +1,19 @@
|
|||
#_kfrombi_columns_slider{display: inline-block; vertical-align: middle;}
|
||||
|
||||
#_kfrombi_trombi { display: grid; grid-row-gap: 2em; font-size: 1.2em; text-align: center; }
|
||||
|
||||
._kfrombi_trombi_3 { grid-template-columns: repeat(3, 1fr); }
|
||||
._kfrombi_trombi_4 { grid-template-columns: repeat(4, 1fr); }
|
||||
._kfrombi_trombi_5 { grid-template-columns: repeat(5, 1fr); }
|
||||
._kfrombi_trombi_6 { grid-template-columns: repeat(6, 1fr); }
|
||||
._kfrombi_trombi_7 { grid-template-columns: repeat(7, 1fr); }
|
||||
._kfrombi_trombi_8 { grid-template-columns: repeat(8, 1fr); }
|
||||
|
||||
.hidden { display: none; }
|
||||
._kfrombi_trombi_img {
|
||||
filter: grayscale(100%) contrast(150%);
|
||||
}
|
||||
|
||||
@media print {
|
||||
.headerHeading, #idPageNavi {display: none;}
|
||||
}
|
111
directory.js
Normal file
111
directory.js
Normal file
|
@ -0,0 +1,111 @@
|
|||
const C = document.createElement;
|
||||
// const G = document.getElementById;
|
||||
|
||||
const ordNrRegex = /.*pOrgNr=([0-9]+).*/gm;
|
||||
const personalIDRegex = /.*pStPersonNr=([0-9]+).*/gm;
|
||||
|
||||
function appendLink() {
|
||||
if (document.getElementById("_kfrombi_row")) return;
|
||||
|
||||
var row_header = document.createElement("th");
|
||||
row_header.textContent = "Trombi";
|
||||
|
||||
var link = document.createElement("a");
|
||||
link.textContent = "Toggle";
|
||||
link.href="#";
|
||||
link.addEventListener("click", toggleTrombi);
|
||||
|
||||
var slider = document.createElement("input");
|
||||
slider.id = "_kfrombi_columns_slider";
|
||||
slider.type = "range";
|
||||
slider.value = 5;
|
||||
slider.min = 3;
|
||||
slider.max = 8;
|
||||
|
||||
var column_nr = document.createElement("span");
|
||||
column_nr.id = "_kfrombi_column_nr";
|
||||
column_nr.textContent = slider.value;
|
||||
var column_label = document.createElement("span");
|
||||
column_label.textContent = " columns";
|
||||
|
||||
slider.addEventListener("input", (event) => {
|
||||
column_nr.textContent = slider.value;
|
||||
const trombi = document.getElementById("_kfrombi_trombi");
|
||||
trombi.classList.remove( "_kfrombi_trombi_3", "_kfrombi_trombi_4", "_kfrombi_trombi_5", "_kfrombi_trombi_6", "_kfrombi_trombi_7", "_kfrombi_trombi_8" );
|
||||
trombi.classList.add(`_kfrombi_trombi_${slider.value}`);
|
||||
})
|
||||
|
||||
var row_links = document.createElement("td");
|
||||
row_links.append(link, slider, column_nr, column_label);
|
||||
|
||||
var tr = document.createElement("tr");
|
||||
tr.classList.add("coNavdocument.getElementByIdroup");
|
||||
tr.append(row_header, row_links);
|
||||
tr.id = "_kfrombi_row";
|
||||
|
||||
const nav = document.getElementById("idPageNavi");
|
||||
nav.tBodies[0].append(tr);
|
||||
}
|
||||
|
||||
function extractIDs(url) {
|
||||
return {
|
||||
org: url.replace(ordNrRegex, "$1"),
|
||||
perso: url.replace(personalIDRegex, "$1"),
|
||||
}
|
||||
}
|
||||
|
||||
function generateCard(student, col) {
|
||||
const url = `https://online.uni-graz.at/kfu_online/pl/ui/$ctx/wbstudkart.wbShowImage?pOrgNr=${student.ids.org}&pStPersonNr=${student.ids.perso}&pType=U`
|
||||
|
||||
const d = document.createElement("div");
|
||||
d.style.gridColumn = "auto";
|
||||
|
||||
const img = document.createElement("img");
|
||||
img.classList.add("_kfrombi_trombi_img");
|
||||
img.src = url;
|
||||
|
||||
const name_div = document.createElement("div");
|
||||
name_div.textContent = `${student.firstname} ${student.lastname}`;
|
||||
|
||||
d.append(img, name_div);
|
||||
return d;
|
||||
}
|
||||
|
||||
function toggleTrombi() {
|
||||
const trombi = document.getElementById("_kfrombi_trombi");
|
||||
const form = document.getElementById("idTNListe");
|
||||
trombi.classList.toggle("hidden");
|
||||
form.classList.toggle("hidden");
|
||||
}
|
||||
|
||||
function generateTrombi() {
|
||||
var trombi = document.getElementById("_kfrombi_trombi");
|
||||
if (trombi) { trombi.remove(); }
|
||||
const slider = document.getElementById("_kfrombi_columns_slider");
|
||||
trombi = document.createElement("div");
|
||||
trombi.id = "_kfrombi_trombi";
|
||||
trombi.classList.add("hidden");
|
||||
trombi.classList.add(`_kfrombi_trombi_${slider.value}`);
|
||||
const form = document.getElementById("idTNListe");
|
||||
|
||||
const table_body = document.getElementById("idTNVWTable").tBodies[0];
|
||||
|
||||
const student_list = [];
|
||||
for (let row of table_body.children) {
|
||||
student_list.push({
|
||||
lastname: row.children[1].textContent,
|
||||
firstname: row.children[2].textContent,
|
||||
ids: extractIDs(row.children[1].children[1].href)
|
||||
})
|
||||
};
|
||||
|
||||
student_list.forEach((student, idx) => {
|
||||
trombi.append(generateCard(student, 1 + idx % 5));
|
||||
});
|
||||
|
||||
form.after(trombi);
|
||||
}
|
||||
|
||||
appendLink();
|
||||
generateTrombi();
|
||||
|
BIN
icons/icon-48.png
Normal file
BIN
icons/icon-48.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
119
icons/icon.svg
Normal file
119
icons/icon.svg
Normal file
|
@ -0,0 +1,119 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="48"
|
||||
height="48"
|
||||
viewBox="0 0 12.7 12.7"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
sodipodi:docname="border.svg"
|
||||
inkscape:export-filename="icon-48.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="1.0770412"
|
||||
inkscape:cx="238.61667"
|
||||
inkscape:cy="131.37844"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1413"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1">
|
||||
<rect
|
||||
x="0"
|
||||
y="32.474262"
|
||||
width="45.281854"
|
||||
height="12.678828"
|
||||
id="rect1" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.2907302,0,0,0.2907302,1.2586092,-0.4136854)"
|
||||
id="text1"
|
||||
style="font-size:8px;font-family:tex;-inkscape-font-specification:tex;white-space:pre;shape-inside:url(#rect1);display:inline;fill:#000000;stroke-width:0.755906;stroke-linecap:round;stroke-linejoin:round"><tspan
|
||||
x="0"
|
||||
y="39.753611"
|
||||
id="tspan2">KFRombi</tspan></text>
|
||||
<ellipse
|
||||
style="fill:#000000;stroke-width:0.266185;stroke-linecap:round;stroke-linejoin:round"
|
||||
id="path1"
|
||||
cx="6.6160941"
|
||||
cy="5.2686148"
|
||||
rx="3.5493381"
|
||||
ry="3.8652532" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round"
|
||||
id="path2"
|
||||
inkscape:flatsided="false"
|
||||
sodipodi:sides="8"
|
||||
sodipodi:cx="5.4926267"
|
||||
sodipodi:cy="5.0868015"
|
||||
sodipodi:r1="1.1985368"
|
||||
sodipodi:r2="0.68863398"
|
||||
sodipodi:arg1="-0.12226288"
|
||||
sodipodi:arg2="0.36970345"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="M 6.6822166,4.9406298 6.1347328,5.3356318 6.4371528,5.8246096 5.7707147,5.7167887 5.6387984,6.2763914 5.2437964,5.7289076 4.7548186,6.0313277 4.8626395,5.3648895 4.3030368,5.2329733 4.8505206,4.8379713 4.5481005,4.3489935 5.2145387,4.4568144 5.3464549,3.8972116 5.7414569,4.4446954 6.2304347,4.1422754 6.1226138,4.8087135 Z"
|
||||
transform="translate(-0.61028141,-0.58743968)" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round"
|
||||
id="path3"
|
||||
inkscape:flatsided="false"
|
||||
sodipodi:sides="8"
|
||||
sodipodi:cx="5.4926267"
|
||||
sodipodi:cy="5.0868015"
|
||||
sodipodi:r1="1.1985368"
|
||||
sodipodi:r2="0.68863398"
|
||||
sodipodi:arg1="-0.12226288"
|
||||
sodipodi:arg2="0.36970345"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="M 6.6822166,4.9406298 6.1347328,5.3356318 6.4371528,5.8246096 5.7707147,5.7167887 5.6387984,6.2763914 5.2437964,5.7289076 4.7548186,6.0313277 4.8626395,5.3648895 4.3030368,5.2329733 4.8505206,4.8379713 4.5481005,4.3489935 5.2145387,4.4568144 5.3464549,3.8972116 5.7414569,4.4446954 6.2304347,4.1422754 6.1226138,4.8087135 Z"
|
||||
transform="translate(2.6524998,-0.71195834)" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round"
|
||||
id="path4"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="6.6160941"
|
||||
sodipodi:cy="7.5143247"
|
||||
sodipodi:rx="1.5538439"
|
||||
sodipodi:ry="0.69132471"
|
||||
sodipodi:start="0"
|
||||
sodipodi:end="3.2134157"
|
||||
sodipodi:arc-type="slice"
|
||||
d="M 8.169938,7.5143247 A 1.5538439,0.69132471 0 0 1 7.3605798,8.1211326 1.5538439,0.69132471 0 0 1 5.7756539,8.0957985 1.5538439,0.69132471 0 0 1 5.0662563,7.4647143 l 1.5498378,0.04961 z" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round"
|
||||
id="rect4"
|
||||
width="0.33944243"
|
||||
height="0.55598503"
|
||||
x="6.6160941"
|
||||
y="5.9792342"
|
||||
ry="0.14385796" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.5 KiB |
26
manifest.json
Normal file
26
manifest.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"manifest_version": 2,
|
||||
"name": "KFRombi",
|
||||
"version": "0.1",
|
||||
|
||||
"browser_specific_settings": {
|
||||
"gecko": {
|
||||
"id": "kfrombi@math.janko.fr"
|
||||
}
|
||||
},
|
||||
|
||||
"description": "Generates a directory of students with photos from online.uni-graz.at",
|
||||
|
||||
"icons": {
|
||||
"48": "icons/icon-48.png"
|
||||
},
|
||||
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": ["https://online.uni-graz.at/kfu_online/pl/ui/$ctx/wblvgrp.anmeldungen*"],
|
||||
"js": ["directory.js"],
|
||||
"css": ["directory.css"]
|
||||
}
|
||||
]
|
||||
|
||||
}
|
Loading…
Reference in a new issue