Bearbeiten geht jetzt -- und zwei Bedienelemente, die keine Kacheln sind
DER SERVER LIESS DAS AENDERN DIE GANZE ZEIT ZU. IM TAGESFENSTER FEHLTE DER KNOPF. Filipe: "ich hab die gemacht und kann sie nicht bearbeiten." Dort standen nur "erledigt" und "loeschen". Ein Recht ohne Knopf ist kein Recht. Jetzt oeffnet "bearbeiten" dasselbe Formular, gefuellt -- ein Formular, zwei Wege (POST oder PATCH), statt eines zweiten, das genauso aussieht und beim naechsten Feld auseinanderlaeuft. Die Wiederholung bleibt beim Bearbeiten aussen vor: Sie ist eine REGEL und wird unter "Laeuft von allein" geaendert, nicht an einer ihrer Auspraegungen. Wer das zulaesst, bekommt einen Termin, der aus der Reihe faellt, ohne dass jemand weiss warum. UND DIE REGEL DAZU IM SERVER Filipe: "nur diese person selber." Bis hierher durfte JEDER aendern, der den Termin ueberhaupt sah -- bei einem Termin mit mehreren Beteiligten also alle. Jetzt: die Leitung und wer ihn eingetragen hat. Dieselbe Regel wie beim Loeschen, die dort schon richtig stand. AUSNAHME "erledigt": Ein Haken, dass ein Gespraech stattgefunden hat, ist keine Aenderung am Termin, sondern eine Rueckmeldung dazu -- sonst muesste jeder Beteiligte den Anleger bitten, den eigenen Call abzuhaken. Gemessen in pruef-teilnehmer, mit allen drei Faellen. Beim Bauen der Pruefung ist mir ein Aufbaufehler unterlaufen (Bea statt Pat als zweite Teilnehmerin -- Luna darf Bea gar nicht einladen), und die Pruefung hat ihn korrekt als 404 statt 403 gemeldet. Der Fehler lag im Aufbau, nicht im Code. DER ANSICHTS-UMSCHALTER WAR VIER KACHELN `.k-ansicht` stand in der Modulliste. Jeder der vier Knoepfe bekam damit die volle Behandlung einer Kachel: Fase, Kantenlicht, Eckwinkel, Raster. Auf 90 mal 32 Pixeln ist das kein Modul, sondern Gedraenge -- vier Fasen und sechzehn Eckwinkel nebeneinander. Die Modulform ist fuer FLAECHEN gedacht, die etwas enthalten. Ein Umschalter enthaelt nichts, er waehlt aus, und die richtige Form dafuer ist die SCHIENE: eine vertiefte Bahn, in der ein erhabenes Stueck aus gebuerstetem Metall sitzt. Man sieht auf einen Blick, dass die vier zusammengehoeren und genau eines gewaehlt ist. DIE GRUPPENKOEPFE AUF DER CALLS-SEITE Vorher eine Textzeile mit Pfeil, und die Karten darunter begannen ohne Uebergang -- aufgeklappt sah man nicht, wo eine Gruppe aufhoert. Jetzt ist der Kopf ein Schalter mit Zustand, die Zahl ein gefasstes Schild, und die Karten stehen aufgeklappt in einer eigenen vertieften Bahn mit Farbschiene links. 14 Pruefungen gelaufen, alle gruen. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -944,7 +944,17 @@
|
||||
if (!a.ok) { melde('Ändern ging nicht.'); return; }
|
||||
await laden();
|
||||
}));
|
||||
if (LEITUNG.has(ich.rolle) || e.erstellt_von === ich.id) {
|
||||
if (darfAendern(e)) {
|
||||
/* BEARBEITEN STAND NIE DA (07.09.2026). Filipe: "ich hab die
|
||||
gemacht und kann sie nicht bearbeiten." Der Server liess das
|
||||
Aendern die ganze Zeit zu -- im Tagesfenster gab es nur
|
||||
"erledigt" und "loeschen". Ein Recht ohne Knopf ist kein
|
||||
Recht. */
|
||||
rechts.append(tuKnopf('bearbeiten', () => {
|
||||
$('tagdialog').close();
|
||||
formularOeffnen(e.tag, e);
|
||||
$('neu').scrollIntoView({ block: 'center', behavior: 'smooth' });
|
||||
}));
|
||||
rechts.append(tuKnopf('löschen', async () => {
|
||||
/* Bei einem Serientermin muss unmissverständlich dastehen,
|
||||
dass NUR dieser eine Tag entfällt. Sonst löscht jemand ihn
|
||||
@@ -1200,7 +1210,21 @@
|
||||
|
||||
/* ---------- Neuer Termin --------------------------------------------------- */
|
||||
|
||||
function formularOeffnen(tag) {
|
||||
/* WELCHEN TERMIN BEARBEITEN WIR GERADE? 0 heisst: einen neuen
|
||||
anlegen. Ein einziger Merker statt eines zweiten Formulars -- ein
|
||||
zweites saehe genauso aus und liefe beim naechsten Feld
|
||||
auseinander. */
|
||||
let bearbeiteId = 0;
|
||||
|
||||
/** Darf ich diesen Termin aendern? Dieselbe Antwort wie im Server
|
||||
* (workspace-kalender.js): die Leitung -- und wer ihn selbst
|
||||
* eingetragen hat. Filipe: "jeder der in seinem kalender was
|
||||
* eintraegt soll es auch bearbeiten koennen, nur diese person
|
||||
* selber." Hier geht es nur darum, keinen Knopf hinzustellen, der
|
||||
* eine Absage bringt; die Sperre steht im Server. */
|
||||
const darfAendern = (e) => LEITUNG.has(ich.rolle) || e.erstellt_von === ich.id;
|
||||
|
||||
function formularOeffnen(tag, termin) {
|
||||
/* Vorbelegung: der angeklickte Tag um 18:00 -- ein realistischer
|
||||
Zeitpunkt für einen Call, spart in der Regel zwei Klicks. Ohne Tag
|
||||
(Knopf oben): morgen. */
|
||||
@@ -1215,6 +1239,27 @@
|
||||
nicht die Auswahl des letzten Termins mitbringen. `reset()` fasst
|
||||
sie nicht an, weil es keine Formularfelder sind. */
|
||||
baueDabei([]);
|
||||
bearbeiteId = 0;
|
||||
$('neu-speichern').textContent = 'Anlegen';
|
||||
|
||||
/* BEARBEITEN: dieselben Felder, gefuellt. Der Rhythmus bleibt
|
||||
aussen vor -- eine Wiederholung ist eine REGEL und wird unter
|
||||
"Laeuft von allein" geaendert, nicht an einer ihrer
|
||||
Auspraegungen. Wer das hier zulaesst, bekommt einen Termin, der
|
||||
aus der Reihe faellt, ohne dass jemand weiss warum. */
|
||||
if (termin) {
|
||||
bearbeiteId = termin.id;
|
||||
$('f-titel').value = termin.titel || '';
|
||||
$('f-art').value = termin.art || 'termin';
|
||||
if (termin.beginn) $('f-beginn').value = String(termin.beginn).slice(0, 16);
|
||||
$('f-dauer').value = termin.dauer_min || 30;
|
||||
$('f-ort').value = termin.ort || '';
|
||||
$('f-text').value = termin.beschreibung || '';
|
||||
baueDabei(termin.teilnehmer_ids || []);
|
||||
$('f-takt').value = '';
|
||||
wdhVorschau();
|
||||
$('neu-speichern').textContent = 'Speichern';
|
||||
}
|
||||
umschalten(true);
|
||||
}
|
||||
|
||||
@@ -1281,11 +1326,16 @@
|
||||
}
|
||||
knopf.disabled = true;
|
||||
try {
|
||||
const a = await hole('/workspace/api/termine', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(koerper),
|
||||
});
|
||||
/* Ein Formular, zwei Wege. Beim Bearbeiten faellt die
|
||||
Wiederholung heraus (siehe formularOeffnen) -- sie wuerde beim
|
||||
PATCH eine zweite Serie anlegen. */
|
||||
if (bearbeiteId) delete koerper.wiederholung;
|
||||
const a = await hole(
|
||||
bearbeiteId ? '/workspace/api/termine/' + bearbeiteId : '/workspace/api/termine', {
|
||||
method: bearbeiteId ? 'PATCH' : 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(koerper),
|
||||
});
|
||||
if (!a.ok) {
|
||||
$('neu-fehler').textContent = (await a.json().catch(() => ({}))).fehler || 'Ging nicht.';
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user