fix(studio): Lauf-Anzeige ohne geöffneten Fall zurücksetzen
Nachtrag zu ffbdd51. _renderLauf lief nur über _stagesIdle, und das wiederum
nur beim Laden eines Falls. Schloss man den Fall oder öffnete das Studio ohne
Fall, blieb der Stand-Kasten mit den Angaben des zuletzt geöffneten Falls
stehen, beim allerersten Aufruf war er leer.
Zwei Absicherungen. Der Leerzustand setzt Fall und Frischedaten zurück und
zeichnet die Spalte einmal neu, und das Dokument bringt den Ausgangstext
bereits mit.
Sechs Prüfungen dafür.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -170,6 +170,14 @@ const Studio = {
|
|||||||
const cols = document.getElementById('studio-cols');
|
const cols = document.getElementById('studio-cols');
|
||||||
if (cols) cols.classList.toggle('idle', on);
|
if (cols) cols.classList.toggle('idle', on);
|
||||||
document.getElementById('studio-empty').style.display = on ? '' : 'none';
|
document.getElementById('studio-empty').style.display = on ? '' : 'none';
|
||||||
|
// Ohne Fall wuerde die Lauf-Anzeige sonst mit dem Stand des zuletzt
|
||||||
|
// geoeffneten Falls stehen bleiben. Nur beim Leerschalten neu zeichnen,
|
||||||
|
// beim Oeffnen macht das loadDetail mit den richtigen Daten.
|
||||||
|
if (on) {
|
||||||
|
this.incident = null;
|
||||||
|
this.fresh = null;
|
||||||
|
this._renderLauf();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// === Linke Spalte: Reiter "Fälle" / "Quellen" ===
|
// === Linke Spalte: Reiter "Fälle" / "Quellen" ===
|
||||||
|
|||||||
@@ -396,7 +396,7 @@
|
|||||||
selben Ziel nebeneinander stehen. Die Beschriftung des Knopfes
|
selben Ziel nebeneinander stehen. Die Beschriftung des Knopfes
|
||||||
richtet sich nach dem Zustand des Falls, siehe _renderLauf. -->
|
richtet sich nach dem Zustand des Falls, siehe _renderLauf. -->
|
||||||
<div class="lauf-stand" id="lauf-stand">
|
<div class="lauf-stand" id="lauf-stand">
|
||||||
<div class="ls-haupt" id="ls-haupt"></div>
|
<div class="ls-haupt" id="ls-haupt">Kein Fall geöffnet</div>
|
||||||
<div class="ls-neben" id="ls-neben"></div>
|
<div class="ls-neben" id="ls-neben"></div>
|
||||||
<button class="ls-btn" id="ls-btn" data-stage="full" disabled
|
<button class="ls-btn" id="ls-btn" data-stage="full" disabled
|
||||||
onclick="Studio.laufKnopf()">
|
onclick="Studio.laufKnopf()">
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ function element(id) {
|
|||||||
toggle: (n, an) => { if (an) klassen.add(n); else klassen.delete(n); },
|
toggle: (n, an) => { if (an) klassen.add(n); else klassen.delete(n); },
|
||||||
contains: (n) => klassen.has(n),
|
contains: (n) => klassen.has(n),
|
||||||
},
|
},
|
||||||
|
style: {},
|
||||||
_kinder: {},
|
_kinder: {},
|
||||||
querySelector(sel) {
|
querySelector(sel) {
|
||||||
const k = sel.replace('.', '');
|
const k = sel.replace('.', '');
|
||||||
@@ -55,7 +56,8 @@ function element(id) {
|
|||||||
|
|
||||||
const IDS = ['lauf-stand', 'ls-haupt', 'ls-neben', 'ls-btn', 'ls-hinweis',
|
const IDS = ['lauf-stand', 'ls-haupt', 'ls-neben', 'ls-btn', 'ls-hinweis',
|
||||||
'lauf-kette', 'lauf-fortschritt', 'lauf-schritte', 'start-panel',
|
'lauf-kette', 'lauf-fortschritt', 'lauf-schritte', 'start-panel',
|
||||||
'art-summary-meta', 'art-fc-meta', 'art-snap-meta', 'art-tl-meta'];
|
'art-summary-meta', 'art-fc-meta', 'art-snap-meta', 'art-tl-meta',
|
||||||
|
'studio-cols', 'studio-empty'];
|
||||||
const elemente = {};
|
const elemente = {};
|
||||||
const meldungen = [];
|
const meldungen = [];
|
||||||
const aufrufe = [];
|
const aufrufe = [];
|
||||||
@@ -91,6 +93,14 @@ const Studio = vm.runInContext(
|
|||||||
'var Studio = {\n' + quelle.slice(von, bis) + '\n'
|
'var Studio = {\n' + quelle.slice(von, bis) + '\n'
|
||||||
+ ' incident: null, fresh: null, _runningStage: null,\n'
|
+ ' incident: null, fresh: null, _runningStage: null,\n'
|
||||||
+ ' async runStage(s) { this._letzterStart = s; },\n'
|
+ ' async runStage(s) { this._letzterStart = s; },\n'
|
||||||
|
// _showEmpty steht ausserhalb des herausgeloesten Blocks, deshalb hier
|
||||||
|
// wortgleich nachgebildet.
|
||||||
|
+ ' _showEmpty(on) {\n'
|
||||||
|
+ ' const c = document.getElementById("studio-cols");\n'
|
||||||
|
+ ' if (c) c.classList.toggle("idle", on);\n'
|
||||||
|
+ ' document.getElementById("studio-empty").style.display = on ? "" : "none";\n'
|
||||||
|
+ ' if (on) { this.incident = null; this.fresh = null; this._renderLauf(); }\n'
|
||||||
|
+ ' },\n'
|
||||||
+ '};\nStudio;', kontext);
|
+ '};\nStudio;', kontext);
|
||||||
|
|
||||||
const LAGE = { id: 7, title: 'Ceuta', type: 'adhoc' };
|
const LAGE = { id: 7, title: 'Ceuta', type: 'adhoc' };
|
||||||
@@ -307,6 +317,19 @@ async function main() {
|
|||||||
pruefe('J2 und behandelt den Fall wie leer',
|
pruefe('J2 und behandelt den Fall wie leer',
|
||||||
g('ls-haupt').textContent.includes('Noch keine Artikel'));
|
g('ls-haupt').textContent.includes('Noch keine Artikel'));
|
||||||
|
|
||||||
|
console.log('\nK) Der Leerzustand räumt die Anzeige auf');
|
||||||
|
neu('aktuell');
|
||||||
|
Studio._renderLauf();
|
||||||
|
pruefe('K1 zunächst steht der Stand des Falls da',
|
||||||
|
g('ls-haupt').textContent.includes('neuesten Stand'));
|
||||||
|
Studio._showEmpty(true);
|
||||||
|
pruefe('K2 danach steht dort kein alter Stand mehr',
|
||||||
|
g('ls-haupt').textContent === 'Kein Fall geöffnet', g('ls-haupt').textContent);
|
||||||
|
pruefe('K3 die Kette ist geleert', g('lauf-kette').innerHTML === '');
|
||||||
|
pruefe('K4 die Schrittliste ist geleert', g('lauf-schritte').innerHTML === '');
|
||||||
|
pruefe('K5 der Knopf ist gesperrt', g('ls-btn').disabled === true);
|
||||||
|
pruefe('K6 der Fall ist wirklich losgelassen', Studio.incident === null);
|
||||||
|
|
||||||
console.log('\nErgebnis: ' + ok + ' bestanden, ' + fail + ' fehlgeschlagen');
|
console.log('\nErgebnis: ' + ok + ' bestanden, ' + fail + ' fehlgeschlagen');
|
||||||
process.exit(fail ? 1 : 0);
|
process.exit(fail ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren