Der Aufgabenkatalog fuers Team: Kategorie mal Stufe, 88 Aufgaben
Filipe: "perfektionniere die kategorien wo ich aufgaben an die modis verteile und so, ich will dass du alles was es gibt auf der welt durch gehst und wie bei den aufgaben wo sie fuer mich haben auch mit kategorien und vielen aufgaben." ERST GEZAEHLT, WAS DA WAR. Es gab einen Katalog: 60 Eintraege in neun Phasen. Wem sie gehoerten: DogFather 13 DogFather & rechte Hand 12 rechte Hand 14 -------------------------------- zusammen 39 von 60 Zwei Drittel des "Modi-Katalogs" waren Aufbauarbeiten fuer Filipe selbst. Nur 20 Eintraege waren wirklich Arbeit fuer jemanden im Team. Und die Verteilung ueber die vierzehn Kategorien war schief: Planung 10, Events 1, Wachstum 1, Branding 1, Sonstiges 0. Der Aufbauplan ist nicht falsch, nur etwas anderes -- er bleibt unter `aufbauplan` erhalten. Ihn zu loeschen hiesse, 60 durchdachte Schritte wegzuwerfen, weil sie am falschen Platz standen. NEU: 88 Aufgaben in KATEGORIE mal STUFE, dieselbe Form wie bei den Creator-Vorlagen. Wer eine Aufgabe vergibt, denkt "Frida macht Chat" und nicht "wir sind in Phase 3". Chat 11, Team 8, Community/Events/Clipping/Technik je 7, Social/Planung/Organisation je 6, Kommunikation/Analyse/Wachstum/ Branding je 5, Sonstiges 3 -- keine Kategorie mehr leer. Drei Stufen: neu dabei (24), eingearbeitet (35), erfahren (29). Eine Aufgabe der Stufe "erfahren" an einen Neuen zu geben ist kein Kompliment, sondern ein Ueberfallen. UND DIE VIERZEHN KATEGORIEN HABEN JETZT EINEN SATZ. Vorher standen da vierzehn nackte Namen -- "Organisation" und "Planung" nebeneinander, ohne dass jemand sagt, was worin gehoert. Dann landet dieselbe Aufgabe beim einen unter Planung, beim anderen unter Organisation, und jede Auswertung darueber ist wertlos. Jetzt: Planung ist, was NOCH NICHT ist; Organisation, was bereits ist, in Ordnung zu halten. RECHERCHIERT, NICHT AUSGEDACHT (Quellen im Kopf des Katalogs): Twitch und Discord zu dem, was ein Moderator tatsaechlich tut; TikTok LIVE im Besonderen (gefilterte Kommentare, Gaesteverwaltung, Regeln zu Beginn, Matches, Geschenke ohne Betteln); Community-Arbeit zu Rhythmus, Vertretung und Monatsrueckblick. Dazu die Burnout-Forschung, die schon in "Wie geht's dir?" steht -- deshalb stehen unter "Team" Aufgaben, die zu wenig Zeit und Streit frueh sichtbar machen. WAS DABEI BEINAHE SCHIEFGEGANGEN WAERE, und was es gefunden hat: Das Uebernehmen griff noch auf MODI_KATALOG zu -- die alten Phasen. Der Browser schickt die Nummer aus der AUSGELIEFERTEN Liste zurueck. Ein Klick auf "Uebernehmen" haette damit eine voellig andere Aufgabe angelegt, und zwar eine, die es gibt: keine Fehlermeldung, nichts Rotes, nur die falsche Aufgabe auf dem Brett. Gefunden hat das pruef-modi-katalog, die an der verschwundenen Phase abgestuerzt ist. Der Knopf "Alle N uebernehmen" schickte die Stufe nicht mit. Er sagte "Alle 4 uebernehmen" und haette elf angelegt -- das merkt man erst auf dem Brett. Und der Satz ueber dem Brett sagte weiterhin "Nach Etappen sortiert". Gesehen im Bildschirmfoto der Pruefung, nicht im Code. server/pruef-modi-katalog.mjs 36 Pruefungen, 0 Fehler Neu darin: jede Kategorie muss belegt sein (mindestens drei), jede Stufe auch, keine Kennung doppelt -- und JEDER TEXT MUSS BEGRUENDEN. Die letzte Zeile hat zwei meiner eigenen Texte als zu duenn erwischt. pruef-modi-kategorien 25, pruef-aufgabenbrett, pruef-vorlagen, pruef-css-klassen, pruef-struktur -- alle 0 Fehler Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -7607,6 +7607,18 @@ body.start .k-leiste .feldschild::after {
|
||||
.stufenleiter__knopf[data-stufe="fort"] { --sf: #a78bfa; }
|
||||
.stufenleiter__knopf[data-stufe="profi"] { --sf: #e8a94e; }
|
||||
.stufenleiter__knopf[data-stufe="meister"] { --sf: #5fc99a; }
|
||||
/* DIE DREI STUFEN DES TEAMS (16.09.2026). Dieselbe Reihe, zweite
|
||||
Ebene: oben die Kategorie, darunter fuer wen die Aufgabe gedacht
|
||||
ist. Die Toene steigen wie bei den Creator-Stufen -- hell fuer den
|
||||
Anfang, warm fuer das, was Verantwortung traegt. */
|
||||
.stufenleiter__knopf[data-stufe="neu"] { --sf: #7ec8f2; }
|
||||
.stufenleiter__knopf[data-stufe="dabei"] { --sf: #a78bfa; }
|
||||
.stufenleiter__knopf[data-stufe="erfahren"] { --sf: #e8a94e; }
|
||||
|
||||
/* Die zweite Reihe steht dichter unter der ersten und traegt weniger
|
||||
Gewicht: Sie waehlt innerhalb dessen, was oben schon gewaehlt ist. */
|
||||
.stufenleiter--fein { margin: -6px 0 14px; }
|
||||
.stufenleiter--fein .stufenleiter__knopf { padding: 5px 11px; font-size: .76rem; }
|
||||
|
||||
.stufenleiter__knopf:hover {
|
||||
color: var(--text);
|
||||
|
||||
@@ -1050,6 +1050,9 @@ Das laesst sich nicht rueckgaengig machen. Erledigte Aufgaben sollten normalerwe
|
||||
schliessen laesst, fuer wen er gedacht ist. */
|
||||
let katalog = null;
|
||||
let kGruppe = null;
|
||||
/* WELCHE STUFE. `null` heisst alle -- und das ist die Vorgabe:
|
||||
Wer eine Kategorie aufmacht, will erst sehen, was es gibt. */
|
||||
let kStufe = null;
|
||||
/* Getrennt vom Inhalt, weil "nichts bekommen" ein gueltiges Ergebnis
|
||||
ist. Ohne dieses Merkmal fragte die Seite bei jedem Neuzeichnen
|
||||
erneut nach -- und bekaeme jedes Mal wieder nichts. */
|
||||
@@ -1290,11 +1293,16 @@ Das laesst sich nicht rueckgaengig machen. Erledigte Aufgaben sollten normalerwe
|
||||
kopf.setAttribute('aria-controls', 'vorlagenbrett-koerper');
|
||||
const kText = el('span', 'vorlagenbrett__kopftext');
|
||||
kText.append(el('span', 'feldschild', 'Aufgaben aus der Vorlage'));
|
||||
/* DER SATZ MUSS SAGEN, WONACH SORTIERT IST. Bis zum 16.09.2026 stand
|
||||
hier "Nach Etappen sortiert" -- und seit dem Umbau auf Kategorie
|
||||
mal Stufe war das schlicht falsch. Ein Satz, der etwas anderes
|
||||
beschreibt als das, was darunter steht, kostet mehr Zeit als er
|
||||
spart. */
|
||||
kText.append(el('span', 'vorlagenbrett__unter', vOffen
|
||||
? 'Nach Etappen sortiert. Übernommen wird als ganz normale Aufgabe '
|
||||
+ '– mit Frist und Kategorie, veränderbar, auf dem Brett darunter.'
|
||||
? 'Nach Kategorie und Stufe sortiert. Übernommen wird als ganz normale '
|
||||
+ 'Aufgabe – mit Frist und Kategorie, veränderbar, auf dem Brett darunter.'
|
||||
: `${katalog.aufgaben.length} fertige Aufgaben in `
|
||||
+ `${katalog.gruppen.length} Etappen – zum Übernehmen.`));
|
||||
+ `${katalog.gruppen.length} Kategorien – zum Übernehmen.`));
|
||||
kopf.append(kText);
|
||||
const pfeil = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
pfeil.setAttribute('viewBox', '0 0 24 24');
|
||||
@@ -1341,6 +1349,51 @@ Das laesst sich nicht rueckgaengig machen. Erledigte Aufgaben sollten normalerwe
|
||||
const gruppe = katalog.gruppen.find((g) => g.schluessel === kGruppe);
|
||||
if (gruppe?.text) koerper.append(el('p', 'vorlagenbrett__stand', gruppe.text));
|
||||
|
||||
/* ---- Die Stufe (16.09.2026) ---------------------------------------
|
||||
|
||||
Filipe: "wie bei den aufgaben wo sie für mich haben auch mit
|
||||
kategorien und vielen aufgaben."
|
||||
|
||||
Dieselbe Kategorie bedeutet für jemanden in der ersten Woche
|
||||
etwas anderes als für jemanden, der einarbeitet. Eine Aufgabe
|
||||
der Stufe "erfahren" an einen Neuen zu geben ist kein
|
||||
Kompliment, sondern ein Überfallen.
|
||||
|
||||
DIE STUFEN KOMMEN VOM SERVER, nicht aus einer Liste hier: Eine
|
||||
zweite Liste im Browser wäre die, die beim nächsten Zusatz
|
||||
veraltet -- und ausgeliefert wird sie an jeden. */
|
||||
const inGruppe = katalog.aufgaben.filter((v) => v.gruppe === kGruppe);
|
||||
if (Array.isArray(katalog.stufen) && katalog.stufen.length) {
|
||||
const sr = el('div', 'stufenleiter stufenleiter--fein');
|
||||
sr.setAttribute('role', 'group');
|
||||
sr.setAttribute('aria-label', 'Stufe wählen');
|
||||
const alle = el('button', 'stufenleiter__knopf');
|
||||
alle.type = 'button';
|
||||
alle.setAttribute('aria-pressed', String(kStufe === null));
|
||||
alle.append(el('span', 'stufenleiter__name', 'Alle'));
|
||||
alle.append(el('span', 'stufenleiter__zahl', String(inGruppe.length)));
|
||||
alle.addEventListener('click', () => { kStufe = null; vorlagenbrettZeigen(); });
|
||||
sr.append(alle);
|
||||
for (const st of katalog.stufen) {
|
||||
const n = inGruppe.filter((v) => v.stufe === st.schluessel).length;
|
||||
if (!n) continue;
|
||||
const k = el('button', 'stufenleiter__knopf');
|
||||
k.type = 'button';
|
||||
k.dataset.stufe = st.schluessel;
|
||||
k.setAttribute('aria-pressed', String(kStufe === st.schluessel));
|
||||
k.title = st.text || '';
|
||||
k.append(el('span', 'stufenleiter__name', st.name));
|
||||
k.append(el('span', 'stufenleiter__zahl', String(n)));
|
||||
k.addEventListener('click', () => { kStufe = st.schluessel; vorlagenbrettZeigen(); });
|
||||
sr.append(k);
|
||||
}
|
||||
koerper.append(sr);
|
||||
const gewaehlt = katalog.stufen.find((x) => x.schluessel === kStufe);
|
||||
if (gewaehlt?.text) {
|
||||
koerper.append(el('p', 'vorlagenbrett__stand', gewaehlt.text));
|
||||
}
|
||||
}
|
||||
|
||||
/* Was schon auf dem Brett liegt -- aus den Aufgaben, die ohnehin
|
||||
geladen sind. Verglichen wird die Kennung der Vorlage und nicht
|
||||
der Titel: Der darf geändert werden. */
|
||||
@@ -1349,7 +1402,8 @@ Das laesst sich nicht rueckgaengig machen. Erledigte Aufgaben sollten normalerwe
|
||||
|
||||
const liste = katalog.aufgaben
|
||||
.map((v, nr) => ({ ...v, nr }))
|
||||
.filter((v) => v.gruppe === kGruppe);
|
||||
.filter((v) => v.gruppe === kGruppe)
|
||||
.filter((v) => !kStufe || v.stufe === kStufe);
|
||||
const box = el('div', 'vorlagenbrett__liste');
|
||||
for (const v of liste) {
|
||||
const karte = el('div', 'vorlagenbrett__karte');
|
||||
@@ -1382,17 +1436,23 @@ Das laesst sich nicht rueckgaengig machen. Erledigte Aufgaben sollten normalerwe
|
||||
const offen = liste.filter((v) => !schonDa.has(v.schluessel)).length;
|
||||
koerper.append(el('p', 'vorlagenbrett__stand', offen
|
||||
? `${offen} von ${liste.length} noch nicht übernommen.`
|
||||
: `Alle ${liste.length} dieser Etappe sind übernommen.`));
|
||||
: `Alle ${liste.length} davon sind übernommen.`));
|
||||
}
|
||||
koerper.append(box);
|
||||
|
||||
if (liste.length > 1) {
|
||||
const alle = el('button', 'abmelden', `Alle ${liste.length} übernehmen`);
|
||||
alle.title = 'Legt alle Aufgaben dieser Etappe an – auch die, die schon auf dem Brett liegen.';
|
||||
alle.title = 'Legt alle Aufgaben an, die gerade in der Liste stehen – '
|
||||
+ 'auch die, die schon auf dem Brett liegen.';
|
||||
alle.type = 'button';
|
||||
alle.style.marginTop = '12px';
|
||||
/* DIE STUFE WANDERT MIT (16.09.2026). Ohne sie legte dieser Knopf
|
||||
alle Aufgaben der Kategorie an -- auch die, die gerade
|
||||
ausgeblendet sind. Der Knopf sagt "Alle 4 übernehmen" und
|
||||
legte elf an; das merkt man erst auf dem Brett. */
|
||||
alle.addEventListener('click', () => uebernehmen(alle,
|
||||
{ art: 'katalog_alle', gruppe: kGruppe, person_id: katalogZiel() }));
|
||||
{ art: 'katalog_alle', gruppe: kGruppe, stufe: kStufe || '',
|
||||
person_id: katalogZiel() }));
|
||||
koerper.append(alle);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user