Kleine Verbesserungen und Teams, Outlook Integration

- Outlook: Kalender-Abo je Konto (eigene Aufgaben, Meilensteine,
  Abwesenheiten als .ics), einzurichten unter Einstellungen
- Teams: Nachricht in einen Kanal bei neuen Aufgaben, mit Link direkt
  auf die Aufgabe; einzurichten unter Admin → Teams
- Sitzungen nach Bedarf laden: beim Start nur die aktuelle und drei
  davor, im Verlauf „Weitere laden“ in Fünferschritten
- Termin aus Mail: Wahl Aufgabe/Meilenstein, Notiz auch bei
  Meilensteinen, nur aktiv mit eingerichteter KI
- Kalender zeigt die KW, auch statt der Browser-Datumsfelder
- Pfeile bei den Abwesenheiten, kleinere Server-Korrekturen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
erikandClaude Opus 5.5 committed 2026-10-30 08:23:02 +01:00
1 parent a2266662ad
commit 4c2e04e78b
19 files changed
+1100 -139

No files matched your search

+10 -14
View File
@@ -361,7 +361,6 @@ function aktuellesBerichtProjekt(w){
// Parameter: uid (project_uid). Keine Rückgabe.
function waehleBerichtProjekt(uid){
berichtAuswahl = uid;
berichtVerlaufAlle = false; // neues Projekt zeigt wieder nur die jüngsten Einträge
renderWochenbericht();
const detail = document.getElementById('berichtDetail');
if(detail) detail.scrollIntoView({ block: 'nearest' });
@@ -742,10 +741,9 @@ function renderBerichtDetail(p, w, prevWeek, locked){
// jedem Eintrag alle Werte zu wiederholen. Keine neue Datenhaltung — jede
// Sitzung hält ihre eigene Kopie des Projekts (projectVersionsForUid()).
const BERICHT_VERLAUF_KURZ = 3;
// berichtVerlaufAlle: "Alle N anzeigen" aufgeklappt; waehleBerichtProjekt()
// setzt es beim Projektwechsel zurück.
let berichtVerlaufAlle = false;
// Gezeigt wird, was geladen ist — beim Start die drei Sitzungen vor der
// aktuellen; „Weitere laden“ holt je fünf ältere (weitereLadenKnopf(),
// js/store.js) und zeichnet nur diesen Abschnitt neu (berichtVerlaufNeu()).
// berichtKurzKw: "KW 43 / 2026" -> "KW 43" (Jahr nur, wenn nicht das laufende)
function berichtKurzKw(label){
@@ -828,11 +826,12 @@ function renderBerichtVerlauf(p, w, locked){
const gText = g || 'alle Gewerke';
let inhalt;
if(eintraege.length === 0){
inhalt = `<div class="hint" style="margin:0">${sitzungen === 0
inhalt = `<div class="hint" style="margin:0">${sitzungen === 0 && !aeltereSitzungenAnzahl()
? 'Dieses Projekt erscheint zum ersten Mal, es gibt noch keine frühere Sitzung.'
: sitzungen === 0 ? 'In den geladenen Sitzungen steht dieses Projekt noch nicht.'
: 'In den früheren Sitzungen gibt es noch keinen Kommentar für ' + esc(gText) + '.'}</div>`;
} else {
const zeigen = berichtVerlaufAlle ? eintraege : eintraege.slice(0, BERICHT_VERLAUF_KURZ);
const zeigen = eintraege;
inhalt = `<ol class="bv-liste">${zeigen.map((e, i) => {
const datum = berichtVerlaufDatum(e.at);
const wer = [e.autor, datum].filter(Boolean).join(', ');
@@ -854,9 +853,7 @@ function renderBerichtVerlauf(p, w, locked){
</li>`;
}).join('')}</ol>`;
}
const mehr = eintraege.length > BERICHT_VERLAUF_KURZ
? `<button type="button" class="bv-mehr" onclick="berichtVerlaufUmschalten()">${berichtVerlaufAlle ? 'Weniger anzeigen' : 'Alle ' + eintraege.length + ' anzeigen'}</button>`
: '';
const mehr = weitereLadenKnopf('berichtVerlaufNeu');
const anzahl = eintraege.length === 1 ? '1 Kommentar' : eintraege.length + ' Kommentare';
return `<section class="bericht-verlauf" id="berichtVerlauf" aria-label="Verlauf der Vorwochen">
<div class="bv-kopf">
@@ -869,10 +866,9 @@ function renderBerichtVerlauf(p, w, locked){
</section>`;
}
// berichtVerlaufUmschalten: "Alle N anzeigen" / "Weniger anzeigen". Zeichnet
// nur den Verlauf neu, damit ein angefangener Kommentar unberührt bleibt.
function berichtVerlaufUmschalten(){
berichtVerlaufAlle = !berichtVerlaufAlle;
// berichtVerlaufNeu: zeichnet nur den Verlauf neu (nach „Weitere laden“),
// damit ein angefangener Kommentar unberührt bleibt.
function berichtVerlaufNeu(){
const w = currentWeek();
const p = w && aktuellesBerichtProjekt(w);
const el = document.getElementById('berichtVerlauf');