Skip to content

Commit 1897d15

Browse files
committed
Version 1.1
1 parent 1368775 commit 1897d15

18 files changed

Lines changed: 12937 additions & 367 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,4 @@ new-flow.json
2727
npm-debug.log*
2828
yarn-debug.log*
2929
yarn-error.log*
30+
doorbit_original.json

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ Ein leistungsstarkes Tool zur visuellen Erstellung und Bearbeitung von UI-Flows
1212
- 🔄 Undo/Redo Funktionalität
1313
- 📋 JSON Import/Export
1414
- 📱 Responsive Design
15-
- 🎯 Verschachtelbare Elemente
16-
- 📄 Multi-Page Support mit anpassbaren Titeln
15+
- 🎯 Verschachtelbare Elemente mit verbesserter Strukturnavigation
16+
- 📄 Multi-Page Support mit anpassbaren Titeln und Icons
1717
- 💻 Material Design Icon-Auswahl für Seiten
18+
- 🧩 Unterstützung für komplexe JSON-Strukturen und Subflows
19+
- 🔍 Verbesserte Containertyp-Erkennung und -Anzeige
20+
- 🔄 Automatische Strukturnormalisierung für konsistente JSON-Ausgabe
1821

1922
## Schnellstart
2023

docs/enhanced_property_editor.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ Der EnhancedPropertyEditor ist ein zentraler Bestandteil des HybridEditors, der
8484
3. **Spezialisierte Editoren**: Optimierte Bearbeitung spezifischer Elementtypen.
8585
4. **Erweiterte Funktionalität**: Unterstützung für komplexe Elementstrukturen und Subflows.
8686
5. **Bessere Typensicherheit**: Strikte Typisierung durch TypeScript.
87+
6. **Containertyp-Erkennung**: Intelligente Erkennung und Anzeige des Containertyps (group, array, chipgroup, custom, subflow).
88+
7. **Verbesserte Strukturnavigation**: Optimierte Navigation durch verschachtelte Elemente mit Containertyp-Informationen.
89+
8. **Unterstützung für komplexe JSON-Strukturen**: Verbesserte Handhabung von doorbit_original.json und ähnlichen komplexen Strukturen.
8790

8891
## Implementierungsdetails
8992

docs/refactoring_documentation.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ Das Refactoring konzentrierte sich auf folgende Hauptbereiche:
1111
3. Optimierung der Visibility-Condition-Auswertung durch Memoization und Abhängigkeitsverfolgung
1212
4. Verbesserung der TypeScript-Typen und Implementierung von Discriminated Unions
1313
5. Optimierung des State-Managements durch modulare Struktur
14+
6. Verbesserung der Pfadnavigation und -auflösung für tiefe Verschachtelungen
15+
7. Implementierung einer intelligenten Containertyp-Erkennung und -Anzeige
16+
8. Entwicklung von Strukturnormalisierungs- und Validierungsfunktionen für komplexe JSON-Strukturen
1417

1518
## 1. PropertyEditor-Refactoring
1619

@@ -128,6 +131,76 @@ Das Refactoring konzentrierte sich auf folgende Hauptbereiche:
128131
- Bessere Nachvollziehbarkeit von Zustandsänderungen
129132
- Effizientere Speichernutzung
130133

134+
## 6. Verbesserte Pfadnavigation
135+
136+
### Probleme des ursprünglichen Designs
137+
138+
- Begrenzte Unterstützung für tiefe Verschachtelungen
139+
- Inkonsistente Pfadauflösung bei komplexen Strukturen
140+
- Schwierigkeiten bei der Navigation durch verschachtelte Elemente
141+
- Probleme beim Hinzufügen von Elementen in tiefen Ebenen
142+
143+
### Implementierte Lösung
144+
145+
- **Verbesserte Funktionen**:
146+
- `getElementByPath`: Robuste Funktion zur Auflösung von Elementpfaden
147+
- `getPathContext`: Ermittelt den Kontext eines Pfads (übergeordnete Elemente, Containertyp)
148+
- Optimierte Breadcrumb-Navigation mit Pfadkontext
149+
- Verbesserte `handleAddElement`-Funktion mit Pfadkontext-Berücksichtigung
150+
151+
- **Vorteile**:
152+
- Unterstützung für bis zu 6 Verschachtelungsebenen
153+
- Konsistente Pfadauflösung auch bei komplexen Strukturen
154+
- Verbesserte Benutzerführung durch kontextbezogene Navigation
155+
- Zuverlässiges Hinzufügen von Elementen in tiefen Ebenen
156+
157+
## 7. Containertyp-Erkennung
158+
159+
### Probleme des ursprünglichen Designs
160+
161+
- Fehlende einheitliche Erkennung von Containertypen
162+
- Inkonsistente Behandlung verschiedener Container (Gruppe, Array, ChipGroup, etc.)
163+
- Unzureichende visuelle Unterscheidung von Containertypen
164+
- Schwierigkeiten bei der Bearbeitung von Unterelementen
165+
166+
### Implementierte Lösung
167+
168+
- **Neue Funktionen**:
169+
- `getContainerType`: Ermittelt den Containertyp eines Elements (group, array, chipgroup, custom, subflow)
170+
- `getSubElements`: Einheitliche Funktion zum Abrufen von Unterelementen
171+
- Verbesserte visuelle Darstellung von Containertypen in der UI
172+
- Containertyp-spezifische Aktionen und Bearbeitungsmöglichkeiten
173+
174+
- **Vorteile**:
175+
- Einheitliche Behandlung verschiedener Containertypen
176+
- Verbesserte Benutzerführung durch visuelle Unterscheidung
177+
- Optimierte Bearbeitung von Unterelementen
178+
- Unterstützung für komplexe Containerstrukturen wie CustomUIElement mit sub_flows
179+
180+
## 8. Strukturnormalisierung
181+
182+
### Probleme des ursprünglichen Designs
183+
184+
- Inkonsistente JSON-Strukturen bei Import/Export
185+
- Fehlende Validierung von Strukturen
186+
- Probleme bei der Verarbeitung komplexer JSON-Dateien wie doorbit_original.json
187+
- Inkonsistente Einwicklung von Elementen in PatternLibraryElement-Objekte
188+
189+
### Implementierte Lösung
190+
191+
- **Neue Funktionen**:
192+
- `normalizeElementTypes`: Normalisiert Elementtypen und Eigenschaften
193+
- `normalizeVisibilityCondition`: Normalisiert Visibility-Bedingungen
194+
- `validateFlowStructure`: Validiert die Struktur eines Flows
195+
- `enforcePatternLibraryElementWrapping`: Erzwingt die Einwicklung von Elementen
196+
- `normalizeComplexStructure`: Spezielle Normalisierung für komplexe Strukturen
197+
198+
- **Vorteile**:
199+
- Konsistente JSON-Strukturen bei Import/Export
200+
- Frühzeitige Erkennung von Strukturfehlern
201+
- Verbesserte Unterstützung für komplexe JSON-Dateien
202+
- Zuverlässige Verarbeitung von doorbit_original.json und ähnlichen Strukturen
203+
131204
## Testergebnisse
132205

133206
Die implementierten Refactoring-Maßnahmen wurden mit automatisierten Tests validiert:

docs/technical_documentation.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ Die Anwendung unterstützt verschiedene UI-Elementtypen:
8686
- Hauptbearbeitungsbereich für UI-Elemente
8787
- Unterstützt Drag & Drop
8888
- Ermöglicht verschachtelte Strukturen
89+
- Verbesserte Pfadnavigation für tiefe Verschachtelungen
90+
- Intelligente Containertyp-Erkennung für verschiedene Elementtypen
8991

9092
#### PropertyEditor und EnhancedPropertyEditor
9193
- Bearbeitung von Element-Eigenschaften
@@ -94,6 +96,8 @@ Die Anwendung unterstützt verschiedene UI-Elementtypen:
9496
- Modulare Struktur mit spezialisierten Editor-Komponenten
9597
- Factory-Pattern für elementtypspezifische Editoren
9698
- Wiederverwendbare UI-Komponenten für konsistente Benutzeroberfläche
99+
- Verbesserte Anzeige von Containereigenschaften und Unterelementen
100+
- Unterstützung für komplexe JSON-Strukturen und Subflows
97101

98102
##### ElementEditorFactory und EnhancedElementEditorFactory
99103
- Factory-Pattern zur Instanziierung des passenden Editors für jeden Elementtyp
@@ -125,11 +129,15 @@ Die Anwendung unterstützt verschiedene UI-Elementtypen:
125129
#### HybridEditor
126130
- Kombiniert die Vorteile von EditorArea und PropertyEditor
127131
- Verbesserte Benutzeroberfläche mit drei Hauptbereichen:
128-
- Strukturnavigator: Hierarchische Anzeige aller Elemente
129-
- EnhancedPropertyEditor: Verbesserte Eigenschaftsbearbeitung
130-
- ElementContextView: Kontextinformationen zum ausgewählten Element
132+
- Strukturnavigator: Hierarchische Anzeige aller Elemente mit Containertyp-Informationen
133+
- EnhancedPropertyEditor: Verbesserte Eigenschaftsbearbeitung mit Containertyp-Anzeige
134+
- ElementContextView: Kontextinformationen zum ausgewählten Element mit detaillierten Strukturinformationen
131135
- Unterstützt komplexe Elementstrukturen und Subflows
132136
- Optimierte Benutzerführung für verschachtelte Elemente
137+
- Verbesserte Pfadnavigation für tiefe Verschachtelungen (bis zu 6 Ebenen)
138+
- Intelligente Containertyp-Erkennung und -Anzeige (group, array, chipgroup, custom, subflow)
139+
- Optimierte Hinzufügung von Elementen in verschiedenen Containertypen
140+
- Verbesserte Breadcrumb-Navigation mit Containertyp-Informationen
133141

134142
#### PageNavigator
135143
- Verwaltung mehrerer Seiten
@@ -168,6 +176,10 @@ Die Anwendung unterstützt verschiedene UI-Elementtypen:
168176
- Validierung der Struktur über JSON-Schema
169177
- Live-Preview des JSON
170178
- Speicherung von Seitentiteln und Icons im JSON
179+
- Automatische Strukturnormalisierung für konsistente JSON-Ausgabe
180+
- Unterstützung für komplexe JSON-Strukturen wie doorbit_original.json
181+
- Validierung und Korrektur von Strukturfehlern
182+
- Konsistente Einwicklung von Elementen in PatternLibraryElement-Objekte
171183

172184
### 4. Icon-Auswahl
173185
- Integrierter IconSelector für Material Design Icons
@@ -231,7 +243,10 @@ src/
231243
├── visibilityUtils.ts # Auswertung von Visibility-Bedingungen
232244
├── optimizedVisibilityUtils.ts # Optimierte Auswertung mit Memoization
233245
├── SubflowManager.ts # Verwaltung von Subflows
234-
└── uuidUtils.ts # UUID-Generierung und -Verwaltung
246+
├── uuidUtils.ts # UUID-Generierung und -Verwaltung
247+
├── normalizeUtils.ts # Strukturnormalisierung und -validierung
248+
├── pathUtils.ts # Pfadnavigation und -manipulation
249+
└── containerUtils.ts # Containertyp-Erkennung und -Verwaltung
235250
```
236251

237252
## Technische Abhängigkeiten

docs/user_documentation.md

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,35 +78,60 @@ Die Hauptnavigation bietet folgende Funktionen:
7878
#### Bearbeitungsoberfläche
7979

8080
1. **Strukturnavigator**: Zeigt die hierarchische Struktur aller Elemente
81-
- Einfache Navigation durch verschachtelte Elemente
81+
- Einfache Navigation durch verschachtelte Elemente (bis zu 6 Ebenen)
8282
- Direkte Auswahl von Unterelementen
8383
- Übersichtliche Darstellung der Elementhierarchie
84+
- Anzeige des Containertyps (Gruppe, Array, Chip-Gruppe, etc.)
85+
- Farbliche Unterscheidung verschiedener Containertypen
86+
- Anzeige der Anzahl von Unterelementen
8487

8588
2. **EnhancedPropertyEditor**: Verbesserte Eigenschaftsbearbeitung
8689
- Tabs für verschiedene Kategorien (Allgemein, Sichtbarkeit, Unterelemente, JSON)
8790
- Spezialisierte Editoren für jeden Elementtyp
8891
- Umfassende Bearbeitung aller Elementeigenschaften
92+
- Anzeige des Containertyps im Header
93+
- Verbesserte Strukturnavigation für Unterelemente
94+
- Unterstützung für komplexe JSON-Strukturen
8995

9096
3. **ElementContextView**: Kontextinformationen zum ausgewählten Element
91-
- Anzeige des Elementpfads
97+
- Anzeige des Elementpfads mit Containertyp-Informationen
9298
- Schnellzugriff auf übergeordnete Elemente
93-
- Kontextbezogene Aktionen
99+
- Kontextbezogene Aktionen je nach Containertyp
100+
- Detaillierte Anzeige von Elementeigenschaften
101+
- Verbesserte Darstellung von Unterelementen
102+
- Containertyp-spezifische Aktionsschaltflächen
94103

95-
### 5. Verschachtelung
104+
### 5. Verschachtelung und Container
96105

97106
Elemente können verschachtelt werden:
98107
1. Gruppe oder Array-Element erstellen
99108
2. Weitere Elemente per Drag & Drop in das Container-Element ziehen
100-
3. Verschachtelungstiefe nach Bedarf erweitern
109+
3. Verschachtelungstiefe nach Bedarf erweitern (bis zu 6 Ebenen werden unterstützt)
110+
111+
#### Containertypen
112+
- **Gruppe (group)**: Fasst mehrere Elemente zusammen, kann alle Elementtypen enthalten
113+
- **Array (array)**: Ermöglicht wiederholbare Elementgruppen, kann alle Elementtypen enthalten
114+
- **Chip-Gruppe (chipgroup)**: Enthält nur Boolean-Elemente als Auswahloptionen
115+
- **Benutzerdefiniert (custom)**: Kann sowohl Elemente als auch Subflows enthalten
116+
- **Subflow (subflow)**: Spezielle Container für komplexe Workflows
117+
118+
#### Navigation in verschachtelten Strukturen
119+
1. Nutzen Sie die Breadcrumb-Navigation oben im Editor, um durch die Hierarchie zu navigieren
120+
2. Verwenden Sie den Strukturnavigator, um direkt zu bestimmten Elementen zu springen
121+
3. Nutzen Sie die containertyp-spezifischen Schaltflächen in der ElementContextView
122+
4. Beachten Sie die farbliche Kennzeichnung der verschiedenen Containertypen
101123

102124
## Tipps & Tricks
103125

104126
### Effiziente Bearbeitung
105-
- Nutzen Sie Gruppeneleente als Container für zusammengehörige Elemente, die dann in der App und im Web auch eine optische Gruppierung bilden
127+
- Nutzen Sie Gruppenelemente als Container für zusammengehörige Elemente, die dann in der App und im Web auch eine optische Gruppierung bilden
106128
- Duplizieren Sie ähnliche Elemente statt sie neu zu erstellen
107129
- Verwenden Sie die JSON-Vorschau für technische Überprüfungen
108130
- Verschieben Sie mit Pfeilelementen die Elemente bei Bedarf, um die Reihenfolge jederzeit zu ändern
109131
- Seiten können Sie einfach mit Drag & Drop neu anordnen
132+
- Nutzen Sie die Containertyp-Anzeige, um schnell zu erkennen, welche Art von Container Sie bearbeiten
133+
- Verwenden Sie die verbesserte Strukturnavigation, um schnell durch komplexe Hierarchien zu navigieren
134+
- Beachten Sie die farbliche Kennzeichnung der verschiedenen Containertypen für eine bessere Übersicht
110135

111136
### Mehrsprachigkeit
112137
- Füllen Sie alle Sprachversionen direkt aus
@@ -116,7 +141,15 @@ Elemente können verschachtelt werden:
116141
### Organisation
117142
- Gruppieren Sie zusammengehörige Elemente
118143
- Nutzen Sie aussagekräftige Titel
119-
- Halten Sie die Verschachtelungstiefe überschaubar
144+
- Halten Sie die Verschachtelungstiefe überschaubar (max. 6 Ebenen werden optimal unterstützt)
145+
- Verwenden Sie den passenden Containertyp für Ihre Anforderungen:
146+
- Gruppen für statische Zusammenfassungen
147+
- Arrays für wiederholbare Elemente
148+
- Chip-Gruppen für Mehrfachauswahl
149+
- Custom-Elemente für spezielle Funktionalitäten
150+
- Subflows für komplexe Teilabläufe
151+
- Nutzen Sie die Strukturnormalisierung für konsistente JSON-Ausgabe
152+
- Achten Sie auf die Validierungshinweise bei der JSON-Vorschau
120153

121154
### Sichtbarkeitsregeln
122155
- Nutzen Sie den verbesserten VisibilityConditionEditor für komplexe Bedingungen
@@ -154,3 +187,17 @@ Elemente können verschachtelt werden:
154187
2. **Wie funktioniert die Mehrsprachigkeit?**
155188
- Texte werden in allen konfigurierten Sprachen gespeichert
156189
- Sprachen können flexibel erweitert werden
190+
191+
3. **Wie tief können Elemente verschachtelt werden?**
192+
- Bis zu 6 Ebenen werden optimal unterstützt
193+
- Tiefere Verschachtelungen sind möglich, aber die Navigation wird komplexer
194+
195+
4. **Was sind Containertypen und wie nutze ich sie?**
196+
- Containertypen (group, array, chipgroup, custom, subflow) definieren das Verhalten von Elementen
197+
- Die Anzeige des Containertyps hilft bei der Navigation und Bearbeitung
198+
- Jeder Containertyp hat spezifische Eigenschaften und Verwendungszwecke
199+
200+
5. **Wie werden komplexe JSON-Strukturen unterstützt?**
201+
- Die Strukturnormalisierung sorgt für konsistente JSON-Ausgabe
202+
- Die Validierung prüft die Struktur auf Fehler
203+
- Komplexe Strukturen wie doorbit_original.json werden unterstützt

0 commit comments

Comments
 (0)