Der Aufgabenkatalog zieht dorthin, wo verteilt wird
Filipe: "das soll auch bitte nicht in der kategorie aufgaben sondern
eure aufgaben sein bitte. setzt das perfekt da rein und pass es
uebeertrieben krass rein."
Und das ist richtig: "Aufgaben" zeigt, WAS liegt. Verteilt wird seit
dem 22.09. auf "Eure Aufgaben" -- dort wird die Person gewaehlt, dort
steht das Formular, dort ihre Aufgaben. Der Katalog ist nichts anderes
als ein zweiter Weg zu derselben Handlung: 101 fertige Aufgaben statt
einer selbst getippten.
WAS DER ERSTE ANLAUF ZERSTOERT HAETTE. Der Block enthaelt ZWEI
Kataloge, und sie gehen an zwei verschiedene Personenkreise -- das
entscheidet der Server. Team Dogi bekommt die 101 Aufgaben in 14
Kategorien, die Agentur den Creator-Katalog (vier Bereiche, vier
Stufen). Ihn einfach herauszuschneiden und drueben hinzulegen haette
dem zweiten Katalog die Heimat genommen. Gemerkt hat das keine
Ueberlegung, sondern die Frage, wer die Zeile "ich.rolle === 'creator'"
eigentlich bedient -- pruef-aufgaben-vorlagen misst sie seit Tagen.
Deshalb eine gemeinsame Datei (vorlagenbrett.js) statt zweier
Abschriften: Die gemeinsamen Teile -- Abruf, Klappkopf, Uebernehmen --
gibt es weiter genau einmal, und jede Seite sagt beim Einrichten, ob
sie den Team- oder den Creator-Zweig zeigt. Fehlt ihr dabei eine
Angabe, sagt die Datei das in der Konsole, statt stumm nichts zu
zeichnen.
WAS DER UMZUG NEBENBEI LOESCHT: Drueben brauchte der Katalog eine
EIGENE Personenwahl, weil es dort keine gab -- eine dritte Knopfreihe
unter zwei anderen, und die Moeglichkeit, oben den einen und unten den
anderen zu waehlen. Hier ist die Person laengst gewaehlt, mitsamt ihren
Zahlen. Eine Auswahl statt zwei.
DREI DINGE, DIE ERST DADURCH AUFFIELEN:
"schon uebernommen" galt im Team-Katalog fuer JEDEN. Sobald irgendwer
eine Vorlage hatte, stand es an der Karte -- auch fuer alle anderen.
Auf einer Seite ohne Personenwahl fiel das kaum auf; hier waere es
offen falsch: Man waehlt Frida, und der Katalog behauptet, sie habe die
Aufgabe schon, weil Rieke sie hat. Der Creator-Zweig machte es von
Anfang an richtig. Und wer verteilt, bekommt ohne gewaehlte Person gar
keine Markierung mehr: "irgendwer hat sie" liest man als "brauche ich
nicht mehr zu vergeben" und ueberspringt, was dem Menschen vor einem
fehlt.
Der Katalog blieb fuer einen Modi GANZ weg. window.__ich kommt ueber
das Netz und ist beim ersten Zeichnen noch nicht da; ein stummes
"return" liess den Block dauerhaft verschwinden, weil niemand ein
zweites Mal zeichnet. Gefunden hat das kein Codelesen, sondern ein
Bildschirmfoto -- die Seite sah vollstaendig aus, nur ohne den Block.
Gewartet wird jetzt mit der Wartestelle des Hauses.
Und er markierte bei einem Modi nichts mehr: Die Aufgabenliste wurde
nur beim Personenwechsel geholt, und ein Modi waehlt nie jemanden.
Damit war die Sperre gegen das zweite Uebernehmen derselben Vorlage
weg. Jetzt gibt es einen Abrufweg fuer beide.
Der Knopf nennt den Namen ("An Rieke"), der Satz darueber auch. Statt
einer Wegbeschreibung zur Personenwahl steht ein Knopf, der hinfuehrt
-- "waehle oben" waere falsch, die Kacheln stehen weiter unten. Und
"auf dem Brett darunter" stimmt hier nicht mehr: Der Kopftext sagt
jetzt, WAS entsteht, nicht WO es landet.
Gemessen: pruef-modi-katalog 129 (vorher 125), pruef-modi-kategorien
29 (vorher 25 mit 3 Fehlern), pruef-aufgaben-vorlagen, pruef-struktur
und pruef-css-klassen alles in Ordnung. Dazu eine Abnahme ueber beide
Seiten und drei Rollen: 32 Messungen, 0 Befunde -- darunter die
Gegenprobe, dass Marinas uebernommene Aufgabe bei Frida NICHT als
uebernommen gilt.
Die 403-Zeilen in pruef-modi-kategorien waren ebenfalls eine Altlast:
Seit dem 22.09. legt im Team Dogi nur die Leitung an ("sie sich nicht
selber aufgaben geben"), die Pruefung tat es weiter als Modi. Sie misst
das jetzt -- samt der Gegenprobe, die es vorher nicht gab.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -98,6 +98,15 @@
|
||||
return s;
|
||||
};
|
||||
let offen = null; // die gerade geöffnete Person
|
||||
/* ALLE Aufgaben des Hauses -- fuer den Vorlagenkatalog weiter unten.
|
||||
Er markiert daran, was schon uebernommen wurde.
|
||||
|
||||
Sie stehen hier und werden nicht ein zweites Mal geholt:
|
||||
"aufgabenZeigen" ruft dieselbe Liste ohnehin ab, um die einer
|
||||
Person herauszufiltern. Ein zweiter Abruf waere Arbeit fuer den
|
||||
Server und ein zweiter Stand im Browser -- und zwei Staende
|
||||
derselben Sache laufen auseinander. */
|
||||
let alleAufgabenV = [];
|
||||
|
||||
/* DIE ZAHL AUF DER PERSONENKACHEL LEBT WOANDERS ALS DIE IN DER KARTE
|
||||
(15.09.2026).
|
||||
@@ -471,6 +480,18 @@
|
||||
: name ? `Sie landet direkt bei ${name} — mit einer Meldung.`
|
||||
: 'Aufgabe anlegen und an eine oder mehrere Personen geben.';
|
||||
}
|
||||
/* UND DER KATALOG DARUNTER ZIEHT MIT (23.09.2026).
|
||||
|
||||
Er zeigt den Namen auf jedem Uebernehmen-Knopf und markiert, was
|
||||
DIESE Person schon hat. Beides haengt an "fuerPerson" -- und das
|
||||
aendert sich genau hier. Ohne diese Zeile stuende auf dem Knopf
|
||||
noch der Name von vorhin, waehrend das Formular darueber laengst
|
||||
jemand anderen meint: zwei Antworten auf dieselbe Frage, auf
|
||||
einem Bildschirm.
|
||||
|
||||
Zugeklappt kostet das nichts -- dann zeichnet der Katalog
|
||||
ohnehin nur seine Kopfzeile. */
|
||||
window.Vorlagenbrett?.zeigen();
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
@@ -735,15 +756,38 @@
|
||||
Frage -- und die Sichtbarkeitsregel muesste dort noch einmal
|
||||
stehen.
|
||||
--------------------------------------------------------------------- */
|
||||
/** Die Aufgaben holen und festhalten -- EIN Weg fuer beide, die sie
|
||||
* brauchen: die Liste unter dem Katalog und der Katalog selbst.
|
||||
*
|
||||
* WARUM DAS EINE EIGENE FUNKTION IST (23.09.2026): Der Abruf stand
|
||||
* in "aufgabenZeigen", und das kehrt ohne gewaehlte Person sofort
|
||||
* um. Ein Modi waehlt aber nie jemanden -- er sieht die Kacheln gar
|
||||
* nicht. Also blieb die Liste bei ihm leer, und der Katalog konnte
|
||||
* nicht mehr markieren, was er schon uebernommen hat. Genau diese
|
||||
* Markierung ist die Sperre dagegen, dieselbe Vorlage ein zweites
|
||||
* Mal zu holen; auf der alten Seite kam sie vom Brett, das immer
|
||||
* geladen wurde.
|
||||
*
|
||||
* Gefunden von pruef-modi-katalog ("0 Karten tragen den dritten
|
||||
* Fusseintrag") -- eine Zeile, die seit dem 16.09. dasteht und
|
||||
* eigentlich die Optik einer engen Karte prueft. */
|
||||
async function aufgabenHolen() {
|
||||
try {
|
||||
const a = await fetch('/workspace/api/aufgaben', { credentials: 'same-origin' });
|
||||
if (!a.ok) return null;
|
||||
const roh = await a.json();
|
||||
alleAufgabenV = Array.isArray(roh) ? roh : (roh?.aufgaben || []);
|
||||
return alleAufgabenV;
|
||||
} catch { return null; }
|
||||
}
|
||||
|
||||
async function aufgabenZeigen(personId, name) {
|
||||
const block = $('e-aufgaben-block');
|
||||
if (!block) return;
|
||||
if (!personId) { block.hidden = true; return; }
|
||||
try {
|
||||
const a = await fetch('/workspace/api/aufgaben', { credentials: 'same-origin' });
|
||||
if (!a.ok) { block.hidden = true; return; }
|
||||
const roh = await a.json();
|
||||
const alle = Array.isArray(roh) ? roh : (roh?.aufgaben || []);
|
||||
const alle = await aufgabenHolen();
|
||||
if (!alle) { block.hidden = true; return; }
|
||||
const nr = Number(personId);
|
||||
const meine = alle.filter((x) => Number(x.verantwortlich_id) === nr
|
||||
|| (x.zuteilung || []).some((z) => Number(z.person_id) === nr
|
||||
@@ -805,6 +849,70 @@
|
||||
erledigt: 'Erledigt', abgebrochen: 'Abgebrochen',
|
||||
};
|
||||
|
||||
/* =====================================================================
|
||||
DER VORLAGENKATALOG (umgezogen am 23.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: "das soll auch bitte nicht in der kategorie aufgaben
|
||||
sondern eure aufgaben sein bitte. setzt das perfekt da rein und
|
||||
pass es uebeertrieben krass rein."
|
||||
|
||||
DER KATALOG SELBST STEHT IN assets/js/vorlagenbrett.js -- dieselbe
|
||||
Datei bedient auch "Aufgaben", dort aber mit dem anderen der beiden
|
||||
Kataloge. Was hier steht, ist nur die Verbindung zu DIESER Seite.
|
||||
|
||||
UND DAS IST DER GANZE GEWINN DES UMZUGS: Drueben musste der Block
|
||||
eine eigene Personenwahl mitbringen, weil es dort keine gab -- eine
|
||||
dritte Knopfreihe unter zwei anderen, und die Moeglichkeit, oben
|
||||
den einen und unten den anderen zu waehlen. Hier ist die Person
|
||||
laengst gewaehlt, mitsamt ihren Zahlen. Eine Auswahl statt zwei.
|
||||
|
||||
"fuerPerson" IST DIE EINE WAHRHEIT. Sie wird an genau zwei Stellen
|
||||
gesetzt: beim Anklicken einer Kachel (ueber verteilBandZeigen) und
|
||||
beim Anhaken im Formular (auswahlLesen). Der Katalog fragt
|
||||
dieselbe Variable ab wie der Verteil-Knopf darueber -- damit KANN
|
||||
nicht auseinanderlaufen, was beide behaupten. */
|
||||
function katalogAnschliessen() {
|
||||
if (!window.Vorlagenbrett) return;
|
||||
window.Vorlagenbrett.einrichten({
|
||||
zweig: 'team',
|
||||
hole: (pfad, optionen) => window.holen(pfad, optionen),
|
||||
/* "melde" nimmt hier zwei Angaben (Text, gut/schlecht). Der
|
||||
Katalog kennt nur die erste -- was er meldet, ist immer ein
|
||||
Fehler. Der zweite Wert bleibt also offen und faellt damit auf
|
||||
"nicht gut" zurueck, und das ist richtig so. */
|
||||
melde: (text) => melde(text),
|
||||
statusName: STATUS_WORT,
|
||||
ich: () => window.__ich || null,
|
||||
aufgaben: () => alleAufgabenV,
|
||||
ziel: () => fuerPerson || null,
|
||||
/* DER NAME WIRD ABGELEITET, NICHT GEHALTEN. Es gibt "fuerName"
|
||||
daneben -- aber das wird beim Anhaken im Formular nicht
|
||||
nachgezogen, und ein Name, der zur falschen Nummer gehoert,
|
||||
ist schlimmer als gar keiner: Der Knopf verspraeche dann
|
||||
etwas, das nicht passiert. Aus der Nummer laesst sich der
|
||||
Name jederzeit richtig herleiten. */
|
||||
zielName: () => {
|
||||
if (!fuerPerson) return null;
|
||||
const p = (leute || []).find((x) => String(x.id) === String(fuerPerson));
|
||||
return p?.name || fuerName || null;
|
||||
},
|
||||
/* Nach dem Uebernehmen: die Aufgaben der Person neu holen. Auf
|
||||
der alten Seite hiess das "laden()" und zeichnete das ganze
|
||||
Brett; hier ist es die Liste unter dem Katalog. */
|
||||
nachAenderung: async () => {
|
||||
if (fuerPerson == null) return;
|
||||
await aufgabenZeigen(fuerPerson, katalogName(fuerPerson));
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/** Der Name zu einer Nummer -- aus "leute", der Liste, die die Seite
|
||||
* ohnehin vom Server hat. */
|
||||
function katalogName(id) {
|
||||
return (leute || []).find((x) => String(x.id) === String(id))?.name || null;
|
||||
}
|
||||
|
||||
async function karte(id, springen = false) {
|
||||
offen = id;
|
||||
/* WER IST GERADE OFFEN? Die Antwort gehoert auf die Kacheln, nicht
|
||||
@@ -822,7 +930,13 @@
|
||||
hier in dieser seite auch sehen." Sie kommen beim Auswaehlen,
|
||||
nicht auf Knopfdruck: Wer jemanden durchgeht, will wissen,
|
||||
was bei ihm liegt -- das ist keine Zusatzfrage. */
|
||||
aufgabenZeigen(id, wieHeisst);
|
||||
/* ERST DIE AUFGABEN, DANN DER KATALOG -- und zwar NACHEINANDER.
|
||||
Der Katalog markiert "schon uebernommen" aus der Aufgabenliste,
|
||||
und die holt "aufgabenZeigen" ueber das Netz. Beide nebeneinander
|
||||
loszuschicken hiesse: Wer schneller ist, entscheidet, ob die
|
||||
Markierung stimmt -- meistens zeichnete der Katalog zuerst und
|
||||
zeigte die Aufgaben der VORHERIGEN Person. */
|
||||
aufgabenZeigen(id, wieHeisst).then(() => window.Vorlagenbrett?.zeigen());
|
||||
}
|
||||
const ziel = $('karte');
|
||||
const vorherY = window.scrollY;
|
||||
@@ -1381,6 +1495,25 @@
|
||||
+ 'Keine Noten, keine Punktzahl.';
|
||||
}
|
||||
|
||||
/* DER VORLAGENKATALOG STEHT FUER BEIDE DA -- Leitung und Modi.
|
||||
|
||||
Er gehoert ausdruecklich NICHT in den Leitungszweig darueber.
|
||||
Filipe: "die modis sollen bei all diesen voschlaegen auch nur
|
||||
bewerben koennen." Genau dafuer muessen sie ihn sehen. Was
|
||||
jemand damit tun darf -- uebernehmen oder sich bewerben --,
|
||||
entscheidet der Server und nicht diese Zeile.
|
||||
|
||||
Vor der Personenwahl: Der Katalog steht trotzdem schon da und
|
||||
sagt, dass noch niemand gewaehlt ist. Ein Block, der erst nach
|
||||
einem Klick erscheint, wird uebersehen. */
|
||||
katalogAnschliessen();
|
||||
/* ERST DIE AUFGABEN, DANN DER KATALOG. Er markiert daran, was
|
||||
schon uebernommen wurde -- ohne diesen Abruf stuende die
|
||||
Markierung beim ersten Zeichnen nicht da, und fuer einen Modi
|
||||
nie, weil bei ihm nie eine Person gewaehlt wird. */
|
||||
await aufgabenHolen();
|
||||
await window.Vorlagenbrett?.zeigen();
|
||||
|
||||
await meineKarte();
|
||||
/* Die sechs Fragen stehen seit dem 15.09.2026 auf einer eigenen
|
||||
Seite. Hier bleibt nur der Verweis -- er wird fuer alle
|
||||
|
||||
Reference in New Issue
Block a user