update
This commit is contained in:
@@ -188,9 +188,16 @@ function problemeAn(feld, funktion = '', original = null) {
|
||||
return props.probleme.filter(p =>
|
||||
p.feld === feld &&
|
||||
(p.funktion || '') === funktion &&
|
||||
!p.ganzes_feld &&
|
||||
(original === null || p.original === original))
|
||||
}
|
||||
|
||||
// Umbau einer ganzen Liste: hängt unter der Feldüberschrift, nicht unter einer Zeile
|
||||
function problemeFeld(feld, funktion = '') {
|
||||
return props.probleme.filter(p =>
|
||||
p.feld === feld && (p.funktion || '') === funktion && p.ganzes_feld)
|
||||
}
|
||||
|
||||
// Bleibt die alte Zeile im Vorschlag stehen, kommt nur etwas dazu — sie ist in Ordnung
|
||||
function fehlerAn(feld, funktion = '', original = null) {
|
||||
return problemeAn(feld, funktion, original).some(p => vorschlagsArt(p) !== 'ergaenzen')
|
||||
@@ -200,6 +207,8 @@ function fehlerAn(feld, funktion = '', original = null) {
|
||||
// mehrere. Gesucht wird über den Text, nicht über den Index: bei mehreren Vorschlägen
|
||||
// hintereinander hat sich die Liste schon verschoben.
|
||||
function zeileAendern(text, p) {
|
||||
// Leeres original: das Feld war leer, es gibt keine Zeile zum Anknüpfen
|
||||
if (!p.original) return vorschlagsZeilen(p).map(z => `- ${z}`).join('\n')
|
||||
const zeilen = text.split('\n')
|
||||
const i = zeilen.findIndex(z => z.replace(/^[-*]\s*/, '').trim() === p.original)
|
||||
if (i < 0) return null
|
||||
@@ -227,6 +236,11 @@ function anwenden(p) {
|
||||
ziel.art = p.vorschlag
|
||||
} else if (p.feld === 'regeln' || p.feld === 'testen') {
|
||||
if (typeof ziel[p.feld] !== 'string') return false // z. B. testen auf Kartenebene
|
||||
if (p.ganzes_feld) {
|
||||
// Umbau der ganzen Liste — einzelne Zeilen daraus wären nicht sinnvoll
|
||||
ziel[p.feld] = vorschlagsZeilen(p).map(z => `- ${z}`).join('\n')
|
||||
return true
|
||||
}
|
||||
const neu = zeileAendern(ziel[p.feld], p)
|
||||
if (neu === null) return false // Zeile schon weg oder umgeschrieben
|
||||
ziel[p.feld] = neu
|
||||
@@ -317,6 +331,7 @@ function alleAblehnen() {
|
||||
<!-- Karten-Regeln nur in der ausführlichen Ansicht -->
|
||||
<section v-if="gross" :class="{ leer: !s.regeln && !istAktiv('regeln') }">
|
||||
<p class="gruppe">Regeln</p>
|
||||
<ProblemHinweis :probleme="problemeFeld('regeln')" @annehmen="annehmen" @ablehnen="ablehnen" />
|
||||
<textarea
|
||||
v-if="istAktiv('regeln')"
|
||||
ref="feldRef"
|
||||
@@ -388,6 +403,7 @@ function alleAblehnen() {
|
||||
<!-- Regeln als Punktliste, ein Block je Funktion -->
|
||||
<div v-if="istAktiv('regeln', i) || f.regeln" class="block">
|
||||
<p class="mini">Regeln</p>
|
||||
<ProblemHinweis :probleme="problemeFeld('regeln', f.text)" @annehmen="annehmen" @ablehnen="ablehnen" />
|
||||
<textarea
|
||||
v-if="istAktiv('regeln', i)"
|
||||
ref="feldRef"
|
||||
@@ -412,6 +428,7 @@ function alleAblehnen() {
|
||||
<!-- Testen als nummerierte Schritte -->
|
||||
<div v-if="istAktiv('testen', i) || f.testen" class="block">
|
||||
<p class="mini">Testen</p>
|
||||
<ProblemHinweis :probleme="problemeFeld('testen', f.text)" @annehmen="annehmen" @ablehnen="ablehnen" />
|
||||
<textarea
|
||||
v-if="istAktiv('testen', i)"
|
||||
ref="feldRef"
|
||||
|
||||
@@ -25,6 +25,7 @@ const text = (p) => (vorschlagsArt(p) === 'entfernen' ? p.original : p.vorschlag
|
||||
<p class="vorschlag" :class="vorschlagsArt(p)">
|
||||
<span v-if="zeichen(p)" class="zeichen">{{ zeichen(p) }}</span>{{ text(p) }}
|
||||
</p>
|
||||
<p v-if="p.regel" class="regel" :title="p.regel">{{ p.regel }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -61,6 +62,15 @@ const text = (p) => (vorschlagsArt(p) === 'entfernen' ? p.original : p.vorschlag
|
||||
white-space: pre-line; /* mehrzeilige Vorschläge bleiben mehrzeilig */
|
||||
}
|
||||
.vorschlag.entfernen { text-decoration: line-through; color: var(--dezent); }
|
||||
/* Die belegte Katalogzeile — macht den Vorschlag nachprüfbar */
|
||||
.regel {
|
||||
margin: 0.15rem 0 0;
|
||||
font-size: 0.72rem;
|
||||
color: var(--dezent);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.zeichen {
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
|
||||
Reference in New Issue
Block a user