screen1 + A5 + B6: „wer zuerst Zeit hat" gilt wieder, und Aufgaben entstehen dort, wo die Person steht
DREI SACHEN, EIN ZUSAMMENHANG.
--- screen1 --------------------------------------------------------
Filipe zu meinem eigenen Satz „wer zuerst Zeit hat — genau das geht ja
nicht mehr": „falls das nicht mehr geht mach das es geht wenn es wieder
geht ist alles gut."
Er hat recht, und ich hatte zu schnell aufgegeben. „Wer zuerst Zeit
hat" muss nicht heissen, dass man sich selbst bedient -- es kann
genauso heissen, dass die ERSTE BEWERBUNG zuerst drankommt. Damit gilt
beides: Die Leitung entscheidet (sein Wunsch von vorhin), und wer
schnell ist, hat den Vorteil (sein Wunsch von eben).
Die Bewerbungen werden jetzt nach EINGANG sortiert, nicht nach Namen
-- die Abfrage sortiert sonst alphabetisch, und dann haette nicht der
Schnelle den Vorteil, sondern Frida. Der Erste bekommt die Marke
„zuerst da" (nur bei mehr als einer -- sonst ist es keine Auskunft,
sondern Fuellwerk).
Geprueft mit Absicht gegen das Alphabet: Nele bewirbt sich zuerst und
steht vorn, obwohl Frida im Alphabet vor ihr kaeme.
--- B6: der Knopf auf dem Aufgabenbrett ----------------------------
Filipe: „dieser button kann da jetzt doch endlich verschwinden, auf
dieser seite sollen ja keine aufgaben mehr verteilt werden."
ER HAT DABEI AUF DEN TEAM-DOGI-BILDSCHIRM GESEHEN, und das ist der
Unterschied zwischen „weg damit" und „weg damit, aber gemessen":
Rolle/Haus aufgaben.html entwicklung.html darfAnlegen
manager/agentur ja NEIN ja
creator/agentur ja NEIN ja
scout/agentur ja NEIN ja
spicy/agentur ja NEIN ja
Haette ich den Knopf einfach entfernt, koennten vier Rollen gar keine
Aufgabe mehr anlegen. Der Server nennt deshalb den ORT, und er leitet
ihn aus den KACHELN der Person ab -- nicht aus dem Seitenrecht (dann
haette DogFather auf der Agenturadresse den Knopf verloren, denn
oeffnen darf er die Seite, nur hat er dort keine Kachel dorthin) und
schon gar nicht aus dem Haus.
--- A5: anlegen, wo die Person steht -------------------------------
Filipe: „dieser buttion da soll nicht einen zu der seite aufgaben
fuehren sondern da in dieser seite die aufgaben erstellen und vergeben
koennen. plus man soll die aufgaben hier in dieser seite auch sehen."
Der Knopf war ein Link auf `aufgaben.html?neu=1`. Jetzt oeffnet er ein
Formular an Ort und Stelle. DREI FELDER, NICHT ZWOELF: Wer hier steht,
hat die Person schon gewaehlt; was fehlt, ist was, bis wann und ob
noch jemand mitmacht. Das grosse Formular auf dem Brett bleibt fuer
den Fall, dass man eine Aufgabe fuer irgendwen irgendwo anlegt -- zwei
vollstaendige Masken fuer dieselbe Sache waeren zwei Gelegenheiten,
eine davon zu vergessen.
Dazu die Aufgaben der gewaehlten Person, auf derselben Seite. Sie
kommen beim Auswaehlen und nicht auf Knopfdruck: Wer jemanden
durchgeht, will wissen, was bei ihm liegt.
Ohne Person ist der Knopf AUS statt weg -- sonst springt die Seite beim
Auswaehlen -- und der Satz daneben sagt, was fehlt.
Gemeldet wird, was der Server WIRKLICH gesetzt hat: `zuteilen` kann
eine Person weglassen (gesperrter Zugang). Wer das verschweigt, laesst
jemanden im Glauben, er habe drei Leute eingetragen.
--- EIN FUND AUF DEM EIGENEN BILDSCHIRMFOTO ------------------------
Die Bestaetigung „Clips vom Samstag schneiden steht jetzt bei Rieke."
stand in WARNROT -- `melde` schreibt immer in denselben Absatz, und
der heisst `.fehler`. Nicht schlimm und genau deshalb heimtueckisch:
Wer Bestaetigungen in Rot liest, sucht den Fehler, und wer sich daran
gewoehnt, ueberliest die echte Warnung. `melde` kennt jetzt eine gute
Nachricht; die Vorgabe bleibt „Fehler", damit die neun vorhandenen
Aufrufe nicht stillschweigend umgefaerbt werden.
GEPRUEFT
pruef-bewerbung-aufgaben 84/0 (von 66) -- neu: die Reihenfolge nach
Eingang mit Gegenprobe gegen das Alphabet, und ein Abschnitt, der A5
und B6 am echten Bildschirm durchspielt (Knopf weg auf dem Brett, kein
Link mehr auf der Entwicklungsseite, Formular oeffnet dort, Aufgabe
steht sofort in der Liste darunter UND wirklich in der Liste des
Servers, Bestaetigung als gute Nachricht gekennzeichnet).
Gruen: pruef-entwicklung, pruef-aufgabenbrett, pruef-css-klassen,
pruef-formulare, pruef-struktur.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -1257,6 +1257,20 @@
|
||||
border-top: 1px solid color-mix(in srgb, var(--rand) 70%, transparent);
|
||||
}
|
||||
.z-bewerbung__name { font-weight: 600; font-size: .88rem; }
|
||||
/* „Zuerst da" — die Auskunft, dass sich diese Person als Erste
|
||||
gemeldet hat. Leise gesetzt: Sie ist ein Hinweis fuer die
|
||||
Entscheidung, keine Vorschrift. */
|
||||
.z-bewerbung__zuerst {
|
||||
padding: 2px 8px;
|
||||
border: 1px solid color-mix(in srgb, var(--k-gut) 45%, transparent);
|
||||
border-radius: 999px;
|
||||
background: color-mix(in srgb, var(--k-gut) 12%, transparent);
|
||||
color: var(--k-gut);
|
||||
font-size: .7rem; font-weight: 600; letter-spacing: .02em;
|
||||
}
|
||||
@media (forced-colors: active) {
|
||||
.z-bewerbung__zuerst { border: 1px solid CanvasText; }
|
||||
}
|
||||
/* Die Worte der Person duerfen die Knoepfe verdraengen, nicht
|
||||
umgekehrt: `flex: 1 1 100%` auf schmalen Schirmen kaeme zu frueh,
|
||||
`min-width` laesst sie erst umbrechen, wenn es eng wird. */
|
||||
|
||||
@@ -1592,6 +1592,145 @@
|
||||
color: var(--text-leise);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
DAS FORMULAR IM BAND (22.09.2026)
|
||||
---------------------------------------------------------------------
|
||||
Filipe: „dieser buttion da soll nicht einen zu der seite aufgaben
|
||||
fuehren sondern da in dieser seite die aufgaben erstellen und
|
||||
vergeben koennen."
|
||||
|
||||
ES LIEGT IM BAND UND NICHT DARUNTER. Das Band ist eine Flex-Reihe
|
||||
(Text links, Knopf rechts); `flex-basis: 100%` setzt das Formular
|
||||
als ganze Zeile darunter, ohne einen zweiten Kasten aufzumachen.
|
||||
Zwei Kaesten untereinander saehen aus wie zwei Sachen -- es ist
|
||||
aber eine: der Knopf und das, was er oeffnet.
|
||||
--------------------------------------------------------------------- */
|
||||
.e-neu {
|
||||
flex: 1 1 100%;
|
||||
margin: 14px 0 0;
|
||||
padding: 14px 0 0;
|
||||
border-top: 1px solid color-mix(in srgb, var(--rand) 80%, transparent);
|
||||
}
|
||||
|
||||
.e-neu__zeile { margin-bottom: 12px; }
|
||||
|
||||
.e-neu input[type="text"],
|
||||
.e-neu input[type="date"],
|
||||
.e-neu textarea {
|
||||
display: block;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
min-height: 44px;
|
||||
padding: 9px 11px;
|
||||
border: 1px solid var(--rand-hell);
|
||||
border-radius: var(--radius-klein, 10px);
|
||||
background: color-mix(in srgb, var(--tinte) 90%, #ffffff 10%);
|
||||
color: var(--text);
|
||||
font: inherit;
|
||||
font-size: .92rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.e-neu textarea { resize: vertical; }
|
||||
|
||||
/* Das Kalendersymbol kommt vom Browser und ist dunkel -- auf dunklem
|
||||
Grund unsichtbar. */
|
||||
.e-neu input[type="date"]::-webkit-calendar-picker-indicator {
|
||||
filter: invert(1);
|
||||
opacity: .62;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.e-neu__knoepfe {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
DIE AUFGABEN DER PERSON
|
||||
---------------------------------------------------------------------
|
||||
„plus man soll die aufgaben hier in dieser seite auch sehen."
|
||||
|
||||
EINE ZEILE JE AUFGABE, keine Karte. Karten haben auf dieser Seite
|
||||
schon die Menschen; noch eine Kartensorte daneben macht aus einer
|
||||
Uebersicht ein Mosaik. Eine Zeile liest sich von links nach rechts:
|
||||
was, wie weit, bis wann.
|
||||
--------------------------------------------------------------------- */
|
||||
/* Eine Bestaetigung ist gruen, eine Absage rot. Ohne diese Regel
|
||||
stand „steht jetzt bei Rieke" in Warnrot -- und wer Bestaetigungen
|
||||
in Rot liest, ueberliest irgendwann die echte Warnung. */
|
||||
.fehler[data-gut="ja"] { color: color-mix(in srgb, var(--k-gut) 85%, var(--text)); }
|
||||
|
||||
.e-aufgaben { margin: 0 0 22px; }
|
||||
|
||||
.e-aufgaben__satz {
|
||||
margin: 0 0 10px;
|
||||
font-size: .86rem;
|
||||
color: var(--text-leise);
|
||||
}
|
||||
|
||||
.e-aufgaben__liste { display: flex; flex-direction: column; gap: 6px; }
|
||||
|
||||
.e-aufgaben__leer {
|
||||
margin: 0;
|
||||
font-size: .88rem;
|
||||
line-height: 1.55;
|
||||
color: var(--text-leise);
|
||||
}
|
||||
|
||||
.e-aufgabe {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
min-height: 44px;
|
||||
padding: 8px 12px;
|
||||
border: 1px solid var(--rand);
|
||||
border-left: 3px solid var(--e-stand, var(--rand-hell));
|
||||
border-radius: var(--radius-klein, 10px);
|
||||
background: color-mix(in srgb, var(--flaeche) 90%, transparent);
|
||||
color: var(--text);
|
||||
text-decoration: none;
|
||||
transition: border-color var(--tempo, .18s) ease;
|
||||
}
|
||||
.e-aufgabe:hover { border-color: var(--rand-hell); }
|
||||
.e-aufgabe:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
|
||||
|
||||
/* DER STAND TRAEGT DIE FARBE AM LINKEN RAND -- aber nie NUR die
|
||||
Farbe: Das Wort steht daneben. Ein Zustand, der allein an der Farbe
|
||||
haengt, ist fuer jeden verloren, der Farben anders sieht. */
|
||||
.e-aufgabe[data-status="offen"] { --e-stand: var(--k-mittel); }
|
||||
.e-aufgabe[data-status="arbeit"] { --e-stand: var(--akzent); }
|
||||
.e-aufgabe[data-status="review"] { --e-stand: var(--violett); }
|
||||
.e-aufgabe[data-status="erledigt"] { --e-stand: var(--k-gut); }
|
||||
.e-aufgabe[data-status="abgebrochen"] { --e-stand: var(--k-neutral); }
|
||||
|
||||
.e-aufgabe__titel { flex: 1 1 14rem; min-width: 0; font-size: .9rem; font-weight: 600; }
|
||||
.e-aufgabe__stand {
|
||||
padding: 2px 9px;
|
||||
border: 1px solid color-mix(in srgb, var(--e-stand) 45%, transparent);
|
||||
border-radius: 999px;
|
||||
background: color-mix(in srgb, var(--e-stand) 12%, transparent);
|
||||
color: var(--e-stand);
|
||||
font-size: .72rem; font-weight: 600;
|
||||
}
|
||||
.e-aufgabe__frist { font-size: .78rem; color: var(--text-leise); }
|
||||
|
||||
/* Was fertig ist, tritt zurueck -- es steht noch da, draengt sich aber
|
||||
nicht mehr vor das Offene. */
|
||||
.e-aufgabe[data-status="erledigt"] .e-aufgabe__titel,
|
||||
.e-aufgabe[data-status="abgebrochen"] .e-aufgabe__titel {
|
||||
font-weight: 400;
|
||||
color: var(--text-leise);
|
||||
}
|
||||
|
||||
@media (forced-colors: active) {
|
||||
.e-neu { border-top: 1px solid CanvasText; }
|
||||
.e-aufgabe { border: 1px solid CanvasText; }
|
||||
.e-aufgabe__stand { border: 1px solid CanvasText; }
|
||||
}
|
||||
|
||||
/* Der Knopf ist ein Link -- er sieht aus wie ein Knopf und muss am
|
||||
Finger auch eines sein. */
|
||||
.e-verteilen .knopf {
|
||||
|
||||
Reference in New Issue
Block a user