From 6a79faa24af757d589395a5c78187fe5c76ac7e9 Mon Sep 17 00:00:00 2001
From: jensilo <k@jensheise.com>
Date: Tue, 26 Dec 2023 18:50:58 +0100
Subject: [PATCH] extend explanations and add better displaying capabilities

---
 docs/templates/paris/dienstleistung.json         | 2 ++
 docs/templates/paris/eigenschaft.json            | 3 ++-
 docs/templates/paris/esfa.json                   | 6 +++---
 docs/templates/paris/esqua.json                  | 4 ++--
 docs/templates/paris/kontext.json                | 3 ++-
 docs/templates/paris/stakeholder.json            | 2 ++
 docs/templates/paris/technische-eigenschaft.json | 2 ++
 docs/templates/paris/technische.json             | 4 +++-
 docs/templates/paris/ziel.json                   | 3 ++-
 public/assets/css/styles.css                     | 4 ++++
 templates/eiffel/_form-elicitation.go.html       | 2 +-
 11 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/docs/templates/paris/dienstleistung.json b/docs/templates/paris/dienstleistung.json
index fcc2661..bb88439 100644
--- a/docs/templates/paris/dienstleistung.json
+++ b/docs/templates/paris/dienstleistung.json
@@ -27,6 +27,8 @@
     "modalitaet": {
       "name": "Modalität",
       "type": "equalsAny",
+      "hint": "Mit welcher Verbindlichkeit wird es getan?",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
diff --git a/docs/templates/paris/eigenschaft.json b/docs/templates/paris/eigenschaft.json
index 9146a63..33bfba5 100644
--- a/docs/templates/paris/eigenschaft.json
+++ b/docs/templates/paris/eigenschaft.json
@@ -20,7 +20,8 @@
     "modalitaet": {
       "name": "Modalität",
       "type": "equalsAny",
-      "hint": "Mit welcher Verbindlichkeit?",
+      "hint": "Mit welcher Verbindlichkeit wird es getan?",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
diff --git a/docs/templates/paris/esfa.json b/docs/templates/paris/esfa.json
index 8c309fb..6128c68 100644
--- a/docs/templates/paris/esfa.json
+++ b/docs/templates/paris/esfa.json
@@ -21,7 +21,7 @@
       "name": "Modalität",
       "type": "equalsAny",
       "hint": "Mit welcher Verbindlichkeit wird es getan?",
-      "explanation": "Beispiel: muss",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
@@ -35,7 +35,7 @@
       "name": "Modalität",
       "type": "equalsAny",
       "hint": "Mit welcher Verbindlichkeit wird es getan?",
-      "explanation": "Beispiel: muss",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
@@ -63,7 +63,7 @@
       "name": "Benutzer",
       "type": "placeholder",
       "hint": "Für wen wird es getan?",
-      "explanation": "Beispiel: dem Administrator",
+      "explanation": "Benutzer gehören zu den Stakeholdern eines Systems:\n - Stakeholder (=Beteiligte) sind alle Menschen, Menschengruppen, Organisationen, Institutionen\n - Benutzer ⊆ Stakeholder.\n - Stakeholder ist definiert als:\n    Stakeholder = [Artikel][Ergänzung] <Person, Personengruppe, Organisation oder Institution> [Ergänzung]\n - Vor oder hinter der Person, Personengruppe etc. kann eine Ergänzung hinzugefügt werden.\n\nBeispiele:\n\"dem Anwender\" → \"dem hierfür berechtigten Anwender\"\n\"dem Anwender\" → \"dem Anwender, der die entsprechenden Rechte hat\"",
       "size": "medium"
     },
     "ermoeglichen": {
diff --git a/docs/templates/paris/esqua.json b/docs/templates/paris/esqua.json
index f7c1e96..0132419 100644
--- a/docs/templates/paris/esqua.json
+++ b/docs/templates/paris/esqua.json
@@ -20,8 +20,8 @@
     "modalitaet": {
       "name": "Modalität",
       "type": "equalsAny",
-      "hint": "Mit welcher Verbindlichkeit?",
-      "explanation": "Beispiel: muss",
+      "hint": "Mit welcher Verbindlichkeit wird es getan?",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
diff --git a/docs/templates/paris/kontext.json b/docs/templates/paris/kontext.json
index 9465000..53ab73b 100644
--- a/docs/templates/paris/kontext.json
+++ b/docs/templates/paris/kontext.json
@@ -20,7 +20,8 @@
     "modalitaet": {
       "name": "Modalität",
       "type": "equalsAny",
-      "hint": "Mit welcher Verbindlichkeit?",
+      "hint": "Mit welcher Verbindlichkeit wird es getan?",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
diff --git a/docs/templates/paris/stakeholder.json b/docs/templates/paris/stakeholder.json
index 8a662b0..38de76e 100644
--- a/docs/templates/paris/stakeholder.json
+++ b/docs/templates/paris/stakeholder.json
@@ -57,6 +57,8 @@
     "modalitaet": {
       "name": "Modalität",
       "type": "equalsAny",
+      "hint": "Mit welcher Verbindlichkeit wird es getan?",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
diff --git a/docs/templates/paris/technische-eigenschaft.json b/docs/templates/paris/technische-eigenschaft.json
index 738547a..6b9ca83 100644
--- a/docs/templates/paris/technische-eigenschaft.json
+++ b/docs/templates/paris/technische-eigenschaft.json
@@ -20,6 +20,8 @@
     "modalitaet": {
       "name": "Modalität",
       "type": "equalsAny",
+      "hint": "Mit welcher Verbindlichkeit wird es getan?",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
diff --git a/docs/templates/paris/technische.json b/docs/templates/paris/technische.json
index b6c01b7..d0fdffc 100644
--- a/docs/templates/paris/technische.json
+++ b/docs/templates/paris/technische.json
@@ -20,6 +20,8 @@
     "modalitaet": {
       "name": "Modalität",
       "type": "equalsAny",
+      "hint": "Mit welcher Verbindlichkeit wird es getan?",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
@@ -59,7 +61,7 @@
       "name": "Benutzer",
       "type": "placeholder",
       "hint": "Für wen wird es getan?",
-      "explanation": "Beschreibung des Benutzers. Beispiel: dem Anwender",
+      "explanation": "Benutzer gehören zu den Stakeholdern eines Systems:\n - Stakeholder (=Beteiligte) sind alle Menschen, Menschengruppen, Organisationen, Institutionen\n - Benutzer ⊆ Stakeholder.\n - Stakeholder ist definiert als:\n    Stakeholder = [Artikel][Ergänzung] <Person, Personengruppe, Organisation oder Institution> [Ergänzung]\n - Vor oder hinter der Person, Personengruppe etc. kann eine Ergänzung hinzugefügt werden.\n\nBeispiele:\n\"dem Anwender\" → \"dem hierfür berechtigten Anwender\"\n\"dem Anwender\" → \"dem Anwender, der die entsprechenden Rechte hat\"",
       "size": "medium"
     },
     "technisch-ermoeglichen": {
diff --git a/docs/templates/paris/ziel.json b/docs/templates/paris/ziel.json
index d2b4934..ed0b916 100644
--- a/docs/templates/paris/ziel.json
+++ b/docs/templates/paris/ziel.json
@@ -32,7 +32,8 @@
     "modalitaet": {
       "name": "Modalität",
       "type": "equalsAny",
-      "hint": "Mit welcher Verbindlichkeit?",
+      "hint": "Mit welcher Verbindlichkeit wird es getan?",
+      "explanation": "( \"MUSS\" | \"SOLL\" | \"SOLLTE\" | \"KANN\" | \"WIRD\" ) [Ergänzung];\nDie [Ergänzung] ist späteren Erweiterungen vorbehalten und wird aktuell nicht verwendet.",
       "value": [
         "muss",
         "soll",
diff --git a/public/assets/css/styles.css b/public/assets/css/styles.css
index c928b86..15a9adc 100644
--- a/public/assets/css/styles.css
+++ b/public/assets/css/styles.css
@@ -29,4 +29,8 @@
 #eiffelElicitationForm.eiffel-neglect-optional :optional {
     border-color: var(--bs-gray-400);
     opacity: 0.75;
+}
+
+.eiffel-rule-explanation {
+    white-space: pre-wrap;
 }
\ No newline at end of file
diff --git a/templates/eiffel/_form-elicitation.go.html b/templates/eiffel/_form-elicitation.go.html
index cd4c9fb..9d2805c 100644
--- a/templates/eiffel/_form-elicitation.go.html
+++ b/templates/eiffel/_form-elicitation.go.html
@@ -164,7 +164,7 @@
                                             {{ end }}
                                             {{ if $rule.Explanation }}
                                                 <dt>{{ t "eiffel.elicitation.form.explanation" }}</dt>
-                                                <dd>{{ $rule.Explanation }}</dd>
+                                                <dd class="eiffel-rule-explanation">{{ $rule.Explanation }}</dd>
                                             {{ end }}
                                             {{ if and (not $rule.Hint) (not $rule.Explanation) }}
                                                 <dd>{{ t "eiffel.elicitation.form.no-further-info" }}</dd>
-- 
GitLab