Bei "An alle" sieht man jetzt, wer sie hat und wer nicht
Filipe: "wenn ich eine aufgabe an alle verteile will ich dass dogfather und die rechte hand individuel von jedem sehen wer es gemacht hat oder nicht." Vier Fehler, die zusammenhingen -- alle gemessen, keiner geraten: 1. "Alle" waehlen, "An alle" druecken, nichts passiert. Die Zeile verglich verantwortlich_id !== "alle"; niemand heisst so, also wurde jede Aufgabe uebersprungen und die Liste blieb leer. Die Aufgaben entstanden, man sah es nur nicht. 2. Der Vermerk an der Karte haette bei "alle" den Stand EINER fremden Person gezeigt -- welcher, haengt von der Reihenfolge der Daten ab. Jetzt steht dort, wie weit es ist, und darunter namentlich, wer sie hat: Offen / Erledigt / ueberfaellig / hat sie nicht. Das Wort steht immer dabei, die Farbe ist nur die Abkuerzung. 3. Die "An wen"-Reihe zeigte SECHS Personen, der Server belieferte VIER. Rechte und linke Hand gingen leer aus, ohne ein Wort; einzeln angeschrieben kam "Das gibt es nicht mehr, lade die Seite neu" zu jemandem, den es sehr wohl gibt. Empfaenger sind jetzt Modis UND linke Hand (Filipes Regel vom 22.09.), und die Menge steht EINMAL in workspace.js -- SQL-Abfrage, Annahme und Browserliste leiten sich daraus ab und koennen nicht mehr auseinanderlaufen. 4. Zweimal "An alle" legte alles doppelt an. Der Kommentar im Server behauptete das Gegenteil; aktiv war die Sperre nur beim Massenknopf. "An alle" fuellt jetzt Luecken. Die bewusste Wiederholung bleibt: Steht am Knopf "Nochmal" (weil wirklich alle sie haben), sagt der Browser das ausdruecklich, und dann legt der Server neu an. Geprueft: pruef-modi-katalog 144 statt 133, 0 Fehler -- elf neue Pruefungen fuer Empfaenger, Luecken und die Gegenprobe, dass ein gewolltes "Nochmal" sehr wohl anlegt. Dazu mess-alle-einzelsicht.mjs (eigene Wegwerf-Datenbank, nie die echte) mit Bildern bei 412 und 1280 px. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -1019,6 +1019,79 @@
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
WER HAT SIE, WER NICHT -- NAMENTLICH (24.09.2026)
|
||||
|
||||
Filipe: „wenn ich eine aufgabe an alle verteile will ich dass
|
||||
dogfather und die rechte hand individuel von jedem sehen wer es
|
||||
gemacht hat oder nicht."
|
||||
|
||||
KEINE TABELLE, SONDERN MARKEN. Eine Tabelle braucht Spaltenbreiten,
|
||||
und die stimmen entweder auf dem Handy oder am Rechner. Marken mit
|
||||
`flex-wrap` brechen genau dann um, wenn der Platz nicht reicht --
|
||||
dieselbe Ueberlegung wie beim Fuss darueber, und aus demselben
|
||||
Grund: eine feste Schwelle waere beim naechsten Namen wieder falsch.
|
||||
|
||||
DIE FARBE IST DIE ABKUERZUNG, NICHT DIE AUSKUNFT. Das Wort steht
|
||||
immer dabei. Wer Farben nicht unterscheidet, liest „Erledigt" --
|
||||
und die Toene sind aus der gedeckten Zustandsleiste (--k-gut,
|
||||
--k-mittel, --k-warn), nicht aus Neon: augenschonend ist Vorgabe.
|
||||
|
||||
WER SIE NICHT HAT, STEHT TROTZDEM DA -- gedaempft und mit
|
||||
gestricheltem Rand. Ein durchgezogener Rand sagt „hier ist etwas",
|
||||
ein gestrichelter „hier fehlt etwas"; das trennt die beiden Sorten
|
||||
auch ohne Farbe, und die Frage „wen muss ich noch fragen?" ist die,
|
||||
nach der man handelt.
|
||||
===================================================================== */
|
||||
.vorlagenbrett__wer {
|
||||
display: flex; flex-wrap: wrap; gap: 6px;
|
||||
margin: 10px 0 0; padding-top: 9px;
|
||||
border-top: 1px solid var(--rand);
|
||||
}
|
||||
.vorlagenbrett__wer-p {
|
||||
display: inline-flex; align-items: baseline; gap: 6px;
|
||||
padding: 3px 9px; border-radius: 999px;
|
||||
border: 1px solid var(--rand-hell);
|
||||
background: rgba(255, 255, 255, .035);
|
||||
font-size: .72rem; line-height: 1.5;
|
||||
}
|
||||
.vorlagenbrett__wer-name { font-weight: 700; color: var(--text-still); }
|
||||
.vorlagenbrett__wer-stand { font-weight: 600; color: var(--text-leise); }
|
||||
|
||||
/* Erledigt tritt zurueck statt zu leuchten: Es ist die Nachricht, die
|
||||
KEINE Handlung braucht. Wer die Reihe ueberfliegt, soll an den
|
||||
offenen haengenbleiben, nicht an den fertigen. */
|
||||
.vorlagenbrett__wer-p[data-stand="erledigt"] { opacity: .78; }
|
||||
.vorlagenbrett__wer-p[data-stand="erledigt"] .vorlagenbrett__wer-stand { color: var(--k-gut); }
|
||||
|
||||
.vorlagenbrett__wer-p[data-stand="arbeit"] .vorlagenbrett__wer-stand,
|
||||
.vorlagenbrett__wer-p[data-stand="review"] .vorlagenbrett__wer-stand { color: var(--k-mittel); }
|
||||
|
||||
.vorlagenbrett__wer-p[data-stand="spaet"] {
|
||||
border-color: color-mix(in srgb, var(--k-warn) 45%, transparent);
|
||||
background: color-mix(in srgb, var(--k-warn) 9%, transparent);
|
||||
}
|
||||
.vorlagenbrett__wer-p[data-stand="spaet"] .vorlagenbrett__wer-stand { color: var(--k-warn); }
|
||||
|
||||
.vorlagenbrett__wer-p[data-stand="abgebrochen"] { opacity: .6; }
|
||||
.vorlagenbrett__wer-p[data-stand="abgebrochen"] .vorlagenbrett__wer-stand { color: var(--k-neutral); }
|
||||
|
||||
.vorlagenbrett__wer-p[data-stand="fehlt"] {
|
||||
border-style: dashed; background: none;
|
||||
}
|
||||
.vorlagenbrett__wer-p[data-stand="fehlt"] .vorlagenbrett__wer-name { color: var(--text-leise); }
|
||||
.vorlagenbrett__wer-p[data-stand="fehlt"] .vorlagenbrett__wer-stand { color: var(--k-neutral); }
|
||||
|
||||
/* Eine gedimmte Karte darf die Reihe nicht mitnehmen -- sonst ist
|
||||
ausgerechnet die Auskunft „wer hat sie" am schlechtesten lesbar,
|
||||
wenn alle sie haben und man nachsehen will, wer schon fertig ist. */
|
||||
.vorlagenbrett__karte[data-schon="ja"] .vorlagenbrett__wer { opacity: 1; }
|
||||
|
||||
@media (forced-colors: active) {
|
||||
.vorlagenbrett__wer-p { border: 1px solid CanvasText; }
|
||||
.vorlagenbrett__wer-p[data-stand="fehlt"] { border-style: dashed; }
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
BEWERBUNGEN AUF EINE VORLAGE (23.09.2026)
|
||||
|
||||
|
||||
@@ -1187,10 +1187,25 @@
|
||||
const p = (leute || []).find((x) => String(x.id) === String(fuerPerson));
|
||||
return p?.name || fuerName || null;
|
||||
},
|
||||
/* WER STEHT IN DER REIHE "AN WEN"? Dieselben Leute, die auch
|
||||
als Kacheln unter "Wen gehst du durch?" stehen -- eine zweite
|
||||
Liste waere im Zweifel eine andere. */
|
||||
zielbare: () => leute || [],
|
||||
/* WER STEHT IN DER REIHE "AN WEN"? Die Leute aus den Kacheln
|
||||
unter "Wen gehst du durch?" -- aber nur die, die aus dem
|
||||
Katalog ueberhaupt etwas bekommen koennen.
|
||||
|
||||
WARUM DIESER FILTER (24.09.2026). Ohne ihn zeigte die Reihe
|
||||
sechs Personen; der Server nahm bei Katalog-Vorlagen aber nur
|
||||
vier an. "An alle 6" legte also vier Aufgaben an, und die
|
||||
beiden Haende gingen leer aus, ohne ein Wort. Wer einzeln auf
|
||||
"An Rechte Hand" drueckte, bekam "Das gibt es nicht mehr --
|
||||
lade die Seite neu" zu einer Person, die es gibt.
|
||||
|
||||
ENTSCHIEDEN HAT DAS DER SERVER, nicht diese Zeile: `kann_katalog`
|
||||
kommt aus derselben Menge, aus der auch die SQL-Abfrage und
|
||||
die Annahme-Pruefung gebildet werden. Stuende hier eine eigene
|
||||
Rollenliste, waere es beim naechsten Mal wieder dieselbe
|
||||
Doppelung. Der Rueckfall auf `true` gilt nur fuer eine
|
||||
Serverfassung, die das Feld noch nicht kennt -- dann ist die
|
||||
Reihe wie vorher, statt ploetzlich leer zu sein. */
|
||||
zielbare: () => (leute || []).filter((p) => p.kann_katalog !== false),
|
||||
/* EIN TIPP IN DER REIHE IST EIN TIPP AUF DIE KACHEL.
|
||||
|
||||
Nicht "auch so aehnlich", sondern derselbe Weg: `karte()`
|
||||
|
||||
@@ -169,6 +169,16 @@
|
||||
'Aufgaben werden dir zugeteilt – anlegen kannst du hier keine. '
|
||||
+ 'Wenn du eine Idee hast, sag kurz Bescheid.',
|
||||
|
||||
/* 24.09.2026: Bis heute lief dieser Fall ueber dieselbe 404 wie
|
||||
„geloescht" -- und auf dem Bildschirm stand „lade die Seite
|
||||
neu". An einer Person, die es sehr wohl gibt, macht das nur
|
||||
ratlos: Neuladen aendert nichts. Der Satz sagt deshalb, WORAN
|
||||
es liegt, und nennt keine Rolle, ueber die der Leser nichts
|
||||
entscheiden kann. */
|
||||
rolle_ohne_katalog:
|
||||
'Aus diesem Katalog bekommt diese Person keine Aufgaben. '
|
||||
+ 'Wähl jemand anderen – oder leg ihr die Aufgabe von Hand an.',
|
||||
|
||||
eintrag_nicht_gefunden: 'Den Eintrag gibt es nicht mehr. Lade die Seite neu.',
|
||||
aufgabe_nicht_gefunden: 'Die Aufgabe gibt es nicht mehr. Lade die Seite neu.',
|
||||
keine_fassung: 'Dazu gibt es noch keine gespeicherte Fassung.',
|
||||
|
||||
@@ -699,8 +699,68 @@
|
||||
jemand gewaehlt ist, steht sie wieder da -- und meint dann
|
||||
genau ihn. */
|
||||
const wem = U.ziel();
|
||||
const anAlle = String(wem) === 'alle';
|
||||
|
||||
/* DIE LEUTE UND DIE ZEITRECHNUNG STEHEN HIER OBEN, weil sie ab
|
||||
heute an ZWEI Stellen gebraucht werden: in der Reihe "An wen"
|
||||
weiter unten und an jeder Karte. Zweimal dieselbe Zeile waere
|
||||
der Anfang zweier Fassungen, die irgendwann verschieden sind --
|
||||
und genau daran ist "alle" heute frueh gescheitert. */
|
||||
const zielbar = U.zielbare() || [];
|
||||
const heute = typeof window.heuteLokal === 'function'
|
||||
? window.heuteLokal() : new Date().toISOString().slice(0, 10);
|
||||
const nochOffen = (a) => a.status !== 'erledigt' && a.status !== 'abgebrochen';
|
||||
const istSpaet = (a) => nochOffen(a) && a.frist && a.frist < heute;
|
||||
|
||||
/* ==== "ALLE" WAR HIER NICHT VORGESEHEN (behoben 24.09.2026) =====
|
||||
|
||||
Filipe hat es aufgenommen: Er waehlt "Alle", drueckt bei einer
|
||||
Karte auf "An alle" -- und auf dem Bildschirm aendert sich
|
||||
NICHTS. Die Karte behaelt ihren Knopf, und darueber steht
|
||||
weiter "12 von 12 noch nicht uebernommen". Die Aufgaben waren
|
||||
angelegt (die Zahlen an den Namen sind gestiegen), nur sah man
|
||||
es an der Stelle nicht, an der man gerade arbeitet.
|
||||
|
||||
DIE URSACHE STAND IN DER ZEILE DARUNTER: verglichen wurde
|
||||
`String(a.verantwortlich_id) !== String(wem)`. Bei "alle" ist
|
||||
`wem` das WORT "alle" -- und keine Aufgabe hat je einen
|
||||
Verantwortlichen namens "alle". Die Bedingung war also IMMER
|
||||
wahr, jede Aufgabe wurde uebersprungen, und die Liste blieb
|
||||
leer. Kein Absturz, keine Meldung: Es sah aus, als waere noch
|
||||
nichts uebernommen.
|
||||
|
||||
Gebaut wurde "alle" am selben Vormittag; `zielWaehlen`,
|
||||
`zielName` und `nachAenderung` wurden angepasst -- diese eine
|
||||
Stelle nicht. Genau die Art Fehler, die eine Liste macht, die
|
||||
man von Hand nachzieht.
|
||||
|
||||
WARUM NICHT NUR EINE ZAHL, SONDERN WER. Filipe: "wenn ich eine
|
||||
aufgabe an alle verteile will ich dass dogfather und die rechte
|
||||
hand individuel von jedem sehen wer es gemacht hat oder nicht."
|
||||
Eine Zahl ("4 von 5") beantwortet "wie weit", aber nicht "wer
|
||||
noch" -- und danach handelt man. Deshalb steht unten eine
|
||||
Marke je Mensch und nicht nur ein Zaehler. */
|
||||
const schonDa = new Map();
|
||||
if (wem || !darfVerteilenV) {
|
||||
const schonWer = new Map(); // Vorlage -> Map(Personennummer -> Aufgabe)
|
||||
if (anAlle) {
|
||||
const zielIds = new Set(zielbar.map((p) => String(p.id)));
|
||||
for (const a of U.aufgaben()) {
|
||||
if (!a.vorlage) continue;
|
||||
const werHats = String(a.verantwortlich_id);
|
||||
if (!zielIds.has(werHats)) continue;
|
||||
if (!schonWer.has(a.vorlage)) schonWer.set(a.vorlage, new Map());
|
||||
/* HAT JEMAND DIESELBE VORLAGE MEHRFACH, ZAEHLT DIE OFFENE.
|
||||
Manches holt man jeden Monat neu; dann liegt daneben eine
|
||||
erledigte von letztem Mal. Stuende die hier, sagte die
|
||||
Karte "Erledigt", waehrend die Person die Aufgabe noch vor
|
||||
sich hat -- und man haekte sie gedanklich ab. */
|
||||
const bisher = schonWer.get(a.vorlage).get(werHats);
|
||||
if (!bisher || (nochOffen(a) && !nochOffen(bisher))) {
|
||||
schonWer.get(a.vorlage).set(werHats, a);
|
||||
}
|
||||
schonDa.set(a.vorlage, a);
|
||||
}
|
||||
} else if (wem || !darfVerteilenV) {
|
||||
for (const a of U.aufgaben()) {
|
||||
if (!a.vorlage) continue;
|
||||
if (wem && String(a.verantwortlich_id) !== String(wem)) continue;
|
||||
@@ -754,16 +814,13 @@
|
||||
Menschen ab; eine feste Grenze waere geraten. Was NICHT geraten
|
||||
ist: dass etwas ueberfaellig liegt. Nur das wird markiert. */
|
||||
const zielName = U.zielName();
|
||||
const zielbar = U.zielbare() || [];
|
||||
/* `zielbar`, `heute`, `nochOffen` und `istSpaet` stehen weiter
|
||||
oben -- es sind dieselben, die auch die Karten benutzen. */
|
||||
if (darfVerteilenV && zielbar.length) {
|
||||
koerper.append(el('p', 'feldschild', 'An wen'));
|
||||
const wer = el('div', 'stufenleiter stufenleiter--wer');
|
||||
wer.setAttribute('role', 'group');
|
||||
wer.setAttribute('aria-label', 'Person wählen');
|
||||
const heute = typeof window.heuteLokal === 'function'
|
||||
? window.heuteLokal() : new Date().toISOString().slice(0, 10);
|
||||
const nochOffen = (a) => a.status !== 'erledigt' && a.status !== 'abgebrochen';
|
||||
const istSpaet = (a) => nochOffen(a) && a.frist && a.frist < heute;
|
||||
/* ==== „ALLE" NEBEN DEN NAMEN (24.09.2026) ===================
|
||||
|
||||
Filipe: „bei an ween fehlt noch die option alle neben den
|
||||
@@ -829,7 +886,16 @@
|
||||
Vorlagen ähnlich heißen. */
|
||||
karte.dataset.vorlage = v.schluessel;
|
||||
const schon = schonDa.get(v.schluessel);
|
||||
if (schon) karte.dataset.schon = 'ja';
|
||||
/* WER SIE HAT -- je Mensch, nicht als Zahl. Bei EINER gewaehlten
|
||||
Person bleibt es beim alten Weg: Dort ist `schon` bereits die
|
||||
individuelle Auskunft. */
|
||||
const werHat = anAlle ? (schonWer.get(v.schluessel) || new Map()) : null;
|
||||
const alleHabenSie = anAlle && zielbar.length > 0 && werHat.size >= zielbar.length;
|
||||
/* DIE KARTE TRITT ERST ZURUECK, WENN SIE WIRKLICH DURCH IST.
|
||||
Bei "alle" heisst `schon` ab EINEM Menschen -- eine Vorlage,
|
||||
die einer von fuenf hat, halb auszublenden waere das Gegenteil
|
||||
der Auskunft: Sie ist die, die noch Arbeit macht. */
|
||||
if (anAlle ? alleHabenSie : !!schon) karte.dataset.schon = 'ja';
|
||||
karte.append(el('h3', 'vorlagenbrett__titel', v.titel));
|
||||
karte.append(el('p', 'vorlagenbrett__text', v.text));
|
||||
const fuss = el('div', 'vorlagenbrett__fuss');
|
||||
@@ -839,9 +905,18 @@
|
||||
ist die halbe Auskunft: "Technik-Check" heisst etwas anderes,
|
||||
je nachdem, wer ihn macht. */
|
||||
if (v.rolle) fuss.append(el('span', 'vorlagenbrett__frist', `für: ${v.rolle}`));
|
||||
if (schon) {
|
||||
if (schon && !anAlle) {
|
||||
fuss.append(el('span', 'vorlagenbrett__schon',
|
||||
`schon übernommen · ${U.statusName[schon.status] || schon.status}`));
|
||||
} else if (anAlle && werHat.size) {
|
||||
/* BEI "ALLE" IST EIN FREMDER STATUS KEINE AUSKUNFT: Fuenf
|
||||
Menschen haben fuenf Staende, und hier stuende der einer
|
||||
einzigen -- welcher, haengt von der Reihenfolge der Daten ab.
|
||||
Der Fuss sagt deshalb nur, WIE WEIT es ist; WER, steht eine
|
||||
Zeile tiefer namentlich. */
|
||||
fuss.append(el('span', 'vorlagenbrett__schon', alleHabenSie
|
||||
? `liegt bei allen ${zielbar.length}`
|
||||
: `liegt bei ${werHat.size} von ${zielbar.length}`));
|
||||
}
|
||||
|
||||
/* ==== ÜBERNEHMEN ODER BEWERBEN? (23.09.2026) ==================
|
||||
@@ -861,16 +936,33 @@
|
||||
oben auf der Seite. „An Rieke" beantwortet die Frage dort,
|
||||
wo man drueckt. Ohne gewaehlte Person bleibt es beim kurzen
|
||||
Wort; dann waere ein Name geraten. */
|
||||
/* "NOCHMAL" NUR, WENN ES WIRKLICH EIN NOCHMAL WAERE.
|
||||
|
||||
Bei "alle" heisst "schon da" ab EINEM Menschen. Haetten dann
|
||||
alle Karten "Nochmal" gesagt, waere der Knopf eine Warnung
|
||||
vor etwas, das gar nicht passiert: Der Server ueberspringt
|
||||
die, die sie schon haben, und legt sie nur bei den uebrigen
|
||||
an. Erst wenn wirklich alle sie liegen haben, ist der
|
||||
naechste Druck eine Wiederholung. */
|
||||
const wirklichNochmal = anAlle ? alleHabenSie : !!schon;
|
||||
const k = el('button', 'knopf knopf--klein',
|
||||
schon ? 'Nochmal' : (zielName ? 'An ' + zielName : 'Übernehmen'));
|
||||
wirklichNochmal ? 'Nochmal' : (zielName ? 'An ' + zielName : 'Übernehmen'));
|
||||
k.type = 'button';
|
||||
if (schon) {
|
||||
if (wirklichNochmal) {
|
||||
k.title = zielName
|
||||
? 'Diese Vorlage liegt schon bei ' + zielName + ' – noch einmal übernehmen?'
|
||||
: 'Diese Vorlage liegt schon auf dem Brett – noch einmal übernehmen?';
|
||||
} else if (anAlle && werHat.size) {
|
||||
k.title = `${werHat.size} haben sie schon – die bekommen sie nicht doppelt.`;
|
||||
}
|
||||
k.addEventListener('click', () => uebernehmen(k,
|
||||
{ art: 'katalog', nr: v.nr, gruppe: kGruppe, person_id: katalogZiel() }));
|
||||
/* `nochmal` sagt dem Server, dass die Wiederholung GEMEINT
|
||||
ist -- nicht, dass er die Sperre vergessen soll. Bei "alle"
|
||||
fuellt er sonst nur die Luecken; steht hier "Nochmal", haben
|
||||
wirklich alle sie, und dann ist der Druck eine Entscheidung. */
|
||||
k.addEventListener('click', () => uebernehmen(k, {
|
||||
art: 'katalog', nr: v.nr, gruppe: kGruppe,
|
||||
person_id: katalogZiel(), nochmal: wirklichNochmal,
|
||||
}));
|
||||
fuss.append(k);
|
||||
} else if (meine) {
|
||||
/* SCHON BEWORBEN. Der Satz sagt, WER antwortet -- sonst wartet
|
||||
@@ -895,6 +987,47 @@
|
||||
Frage, warum hier nichts zu tun ist. */
|
||||
karte.append(fuss);
|
||||
|
||||
/* ==== WER HAT SIE, WER NICHT -- NAMENTLICH (24.09.2026) =======
|
||||
|
||||
Filipe: „wenn ich eine aufgabe an alle verteile will ich dass
|
||||
dogfather und die rechte hand individuel von jedem sehen wer
|
||||
es gemacht hat oder nicht. aufgabe an alle verteilen aber
|
||||
individuel sehen wir das."
|
||||
|
||||
NUR BEI „ALLE". Ist eine einzelne Person gewaehlt, steht ihr
|
||||
Stand schon im Fuss -- eine Reihe mit einem einzigen Namen
|
||||
waere dieselbe Auskunft ein zweites Mal.
|
||||
|
||||
DAS WORT STEHT DA, NICHT NUR DIE FARBE. „Erledigt" liest auch,
|
||||
wer Farben nicht unterscheidet oder die Seite schwarzweiss
|
||||
ausdruckt; die Farbe ist die Abkuerzung, nicht die Auskunft.
|
||||
Deshalb traegt jede Marke beides.
|
||||
|
||||
UND „HAT SIE NICHT" IST AUCH EINE ANTWORT -- die wichtigste
|
||||
sogar. Wer nur die auffuehrt, die sie haben, beantwortet
|
||||
„wie weit sind wir", aber nicht „wen muss ich noch fragen".
|
||||
Die Fehlenden stehen deshalb mit da, gedaempft, aber lesbar. */
|
||||
if (anAlle && darfVerteilenV && zielbar.length) {
|
||||
const reihe = el('div', 'vorlagenbrett__wer');
|
||||
reihe.setAttribute('role', 'list');
|
||||
reihe.setAttribute('aria-label', `Wer „${v.titel}“ schon hat`);
|
||||
for (const p2 of zielbar) {
|
||||
const a2 = werHat.get(String(p2.id));
|
||||
const spaet = !!a2 && istSpaet(a2);
|
||||
const marke = el('span', 'vorlagenbrett__wer-p');
|
||||
marke.setAttribute('role', 'listitem');
|
||||
/* EIN ZUSTAND JE MARKE, und zwar der, nach dem man handelt:
|
||||
ueberfaellig sticht „offen", sonst zaehlt der Status. */
|
||||
marke.dataset.stand = !a2 ? 'fehlt' : (spaet ? 'spaet' : (a2.status || 'offen'));
|
||||
marke.append(el('span', 'vorlagenbrett__wer-name', p2.name));
|
||||
marke.append(el('span', 'vorlagenbrett__wer-stand', !a2
|
||||
? 'hat sie nicht'
|
||||
: ((U.statusName[a2.status] || a2.status) + (spaet ? ' · überfällig' : ''))));
|
||||
reihe.append(marke);
|
||||
}
|
||||
karte.append(reihe);
|
||||
}
|
||||
|
||||
/* ==== DIE BEWERBUNGEN ANDERER -- nur für die, die entscheiden ==
|
||||
|
||||
Sie stehen AN DER KARTE und nicht in einer eigenen Liste
|
||||
|
||||
Reference in New Issue
Block a user