🎉 Neu in Version 1.6.6
1️⃣ Beziehungen direkt löschen
Beziehungen können jetzt über das Kontextmenü (Rechtsklick auf die Raute) direkt gelöscht werden. Gleiches Verfahren wie für Entitäten und Attribute. Das Löschen entfernt auch alle zugeordneten Attribute der Beziehung automatisch.
2️⃣ PNG Export verbessert: Bounding Box wie PDF
Problem behoben: PNG Export exportierte das gesamte Canvas mit viel leerem Raum rundherum.
- ✅ Automatische Berechnung der Diagramm-Bounding-Box
- ✅ Nur relevanter Bereich wird exportiert (kein leerer Raum)
- ✅ Kleinere Dateigrößen, bessere Qualität
- ✅ Konsistent mit PDF-Export-Verhalten
3️⃣ Tablet & Mobile: Zoom und Scroll funktionieren jetzt!
Großes Usability-Update für iPad/Tablets:
- ✅ Zwei-Finger-Pinch-Zoom: Mit zwei Fingern zusammenziehen/auseinanderziehen zum Zoomen (funktioniert überall)
- ✅ Normales Ein-Finger-Scrolling: Das Diagramm kann jetzt einfach mit einem Finger gescrollt werden
- ✅ Smart preventDefault(): Nur wenn wirklich ein Objekt gegriffen wird, wird das Browser-Scrolling blockiert
- ✅ Vollständiges Tablet-Erlebnis: Zoom + Scroll funktionieren überall, auch ohne Kontextmenü
Tablets/Mobile Bedienung:
- Zwei Finger zusammenziehen: Verkleinern (Zoom Out)
- Zwei Finger auseinanderziehen: Vergrößern (Zoom In)
- Ein Finger draußen scrollen: Normales Scrollen des Canvas (funktioniert jetzt!)
- Ein Finger auf Element: Element verschieben (wie vorher)
- Langes Drücken auf Element: Kontextmenü anzeigen (wie vorher)
preventDefault() aufriefe, was das Browser-Scrolling blockierte. In v1.6.6 wird preventDefault() nur aufgerufen, wenn ein Objekt wirklich gegriffen wird.
✨ Hauptfeatures
🎨 Chen-Notation
Vollständige Umsetzung der Chen-Notation mit Rechtecken für Entitäten, Rauten für Beziehungen und Ellipsen für Attribute.
🔄 AutoLayout
Force-directed Algorithmus für automatische, optimale Anordnung mit Kollisionsvermeidung und intelligenter Attribut-Positionierung.
🔢 Kardinalitäten
Flexible 3-Parameter-Steuerung mit direkter absoluter Positionierung für präzise Platzierung.
✅ Live-Validierung
Echtzeit-Überprüfung mit farbigen Badges und automatischer Fehleranzeige inkl. Primärschlüssel-Prüfung.
💾 Multi-Format Export
PNG, SVG, JSON und optimierter PDF-Export (DIN A4) mit automatischer Orientierung.
📱 Responsive
Funktioniert auf Desktop, Tablet und Smartphone mit Touch-Unterstützung.
🔗 Reflexive Beziehungen
Unterstützung für selbstbezügliche Relationen mit Rollenbezeichnungen.
🎯 Raster-Snap
Automatisches Einrasten am 10px-Raster für präzise Anordnung.
🌐 Online verfügbar
Der ERM Editor ist öffentlich zugänglich unter:
https://erm.siemens-gymnasium-berlin.de
Netzwerkzugriff auf diese Domain ist für den Editor erlaubt und erforderlich.
🎮 Bedienung
Entitäten erstellen
- Namen eingeben im Feld "Entitätsname"
- Button "➕ Entität hinzufügen" klicken
- Entität erscheint auf der Zeichenfläche und kann verschoben werden
Attribute hinzufügen
- Entität auswählen (Dropdown "Entität auswählen")
- Attributname eingeben
- Optional: Als Primärschlüssel markieren (Checkbox "Primärschlüssel")
- Button "➕ Attribut hinzufügen" klicken
Beziehungen erstellen
- Namen für die Beziehung eingeben
- Entität A auswählen
- Entität B auswählen
- Kardinalitäten eingeben (z.B. "1", "N", "M", "0..1")
- Optional: Rolle A und Rolle B für reflexive Beziehungen
- Button "➕ Beziehung hinzufügen" klicken
AutoLayout verwenden
- Im Abschnitt "🔄 AutoLayout" den Button "🔄 AutoLayout anwenden" klicken
- Der Force-directed Algorithmus ordnet alle Elemente automatisch an
- Entitäten werden gleichmäßig verteilt
- Attribute werden kreisförmig um Entitäten platziert
- Beziehungsattribute werden ebenfalls optimiert positioniert
Kontextmenü
Rechtsklick auf Elemente öffnet Kontextmenü zum:
- Bearbeiten von Namen
- Löschen von Elementen
- Bearbeiten von Rollen (bei reflexiven Beziehungen)
- Ändern von Attributen (Primärschlüssel-Status)
🔢 Kardinalitäten - Präzise Positionierung
Das 3-Parameter-System (v1.6.3)
| Parameter | Funktion | Standard |
|---|---|---|
| Senkrechter Offset | Abstand der virtuellen Linie von der Verbindungslinie (horizontal: oberhalb, vertikal: links) | 18 |
| Abstand | Horizontaler Abstand zwischen den beiden Kardinalitäten auf der virtuellen Linie | 150 |
| Längs-Verschiebung | Verschiebt beide Kardinalitäten gemeinsam entlang der virtuellen Linie | 0 |
Empfohlene Einstellungen
Für enge Diagramme:
- Senkrechter Offset:
15 - Abstand:
120 - Längs-Verschiebung:
0
Für weitläufige Diagramme:
- Senkrechter Offset:
22 - Abstand:
180 - Längs-Verschiebung:
0
Für lange Beziehungsnamen:
- Längs-Verschiebung erhöhen (z.B.
30oder50) - Damit liegen die Kardinalitäten weiter außen und überlappen nicht mit dem Beziehungsnamen
Technischer Hintergrund (v1.6.3)
Direkte absolute Positionierung
Version 1.6.3 implementiert eine neue, zuverlässigere Methode:
- Horizontale Linien:
cardPosY = diamondConn.y - Math.abs(perpOffset)→ immer oberhalb - Vertikale Linien:
cardPosX = diamondConn.x - Math.abs(perpOffset)→ immer links - Entlang-Richtung nutzt weiterhin Einheitsvektor (ux, uy)
Math.abs()macht die Positionierung robust gegenüber negativen Werten
🔄 AutoLayout - Intelligente Anordnung
Funktionsweise
Der AutoLayout-Algorithmus verwendet ein Force-directed Layout basierend auf physikalischen Kräften:
1. Abstoßungskräfte (Entitäten)
- Alle Entitäten stoßen sich gegenseitig ab
- Verhindert Überlappungen und sorgt für gleichmäßige Verteilung
- Stärke nimmt mit der Entfernung ab (inverse Quadratfunktion)
2. Anziehungskräfte (Beziehungen)
- Verbundene Entitäten ziehen sich an
- Hält zusammengehörige Elemente nah beieinander
- Linearproportional zur Entfernung
3. Intelligente Attribut-Positionierung
- Attribute werden kreisförmig um ihre Entität angeordnet
- Der Algorithmus sucht die größte Lücke zwischen bestehenden Beziehungslinien
- Attribute werden in dieser Lücke platziert → minimale Überschneidungen
- Bei nur einem Attribut: optimale Position wird automatisch gewählt
4. Raster-Snap
- Alle finalen Positionen werden am 10px-Raster ausgerichtet
- Sorgt für saubere, professionelle Darstellung
- Erstellen Sie zuerst Ihr komplettes Datenmodell
- Klicken Sie auf "🔄 AutoLayout anwenden"
- Justieren Sie bei Bedarf einzelne Positionen manuell nach
💾 Export-Funktionen
Verfügbare Formate
| Format | Verwendungszweck | Besonderheiten |
|---|---|---|
| PNG | Präsentationen, Dokumentationen, Websites | Rasterformat, transparent, hohe Qualität |
| SVG | Vektorgrafiken, Webentwicklung, Druckvorstufe | Verlustfrei skalierbar, editierbar |
| JSON | Speichern & Laden, Versionskontrolle, Backup | Komplettes Datenmodell mit allen Metadaten |
| Abgaben, Drucken, Archivierung | DIN A4 optimiert, automatische Orientierung |
PDF-Export (DIN A4 optimiert)
Automatische Optimierung in v1.6.0+
- Bounding-Box-Berechnung: Nur das tatsächliche Diagramm wird erfasst (kein leerer Canvas-Bereich)
- Automatische Orientierung:
- Querformat bei breiten Diagrammen (Breite > Höhe)
- Hochformat bei hohen Diagrammen (Höhe > Breite)
- Zentrierte Darstellung: Das Diagramm wird mittig auf der A4-Seite platziert
- Automatische Skalierung: Bei Bedarf wird das Diagramm verkleinert, um auf eine Seite zu passen
- 15mm Rand: Professioneller Seitenrand rundherum
Dateiname anpassen
Im Bereich "💾 Datei-Verwaltung" können Sie einen Dateinamen eingeben:
- Dieser Name wird für PNG-, SVG- und PDF-Exporte verwendet
- Fallback: "erm-model" wenn das Feld leer ist
- Dateiendung wird automatisch ergänzt
💡 Tipps & Tricks
Allgemeine Tipps
- Speichern nicht vergessen: Exportieren Sie regelmäßig als JSON, um Ihre Arbeit zu sichern
- Raster nutzen: Elemente rasten automatisch am 10px-Raster ein für saubere Ausrichtung
- Tastenkombinationen:
Strg+S(Windows) oderCmd+S(Mac) zum schnellen Speichern - Validierung beachten: Das farbige Badge zeigt Fehler sofort an
Problemlösungen
Kardinalitäten überlappen sich:
- Abstand erhöhen (z.B. von 150 auf 180)
- Oder: Längs-Verschiebung anpassen
Kardinalitäten zu weit von der Raute entfernt:
- Abstand verringern (z.B. von 150 auf 120)
- Senkrechter Offset anpassen (z.B. von 18 auf 15)
Kardinalitäten überlappen mit Beziehungsnamen:
- Längs-Verschiebung erhöhen (z.B. auf 40 oder 50)
- Dadurch wandern die Kardinalitäten weiter nach außen
Attribute überlappen mit Beziehungslinien:
- "🔄 AutoLayout anwenden" - der Algorithmus findet die optimale Lücke
- Oder: Attribute manuell verschieben
Diagramm zu groß für PDF:
- AutoLayout verwenden für kompaktere Anordnung
- Oder: Entitäten manuell näher zusammenschieben
- PDF skaliert automatisch, aber kleinere Diagramme sind besser lesbar
Best Practices für große Diagramme
- Zentrale Entitäten in die Mitte platzieren
- Verwandte Entitäten gruppieren
- AutoLayout als Startpunkt verwenden
- Kardinalitäts-Abstand bei vielen Beziehungen reduzieren (120-130)
- Regelmäßig zwischenspeichern (JSON-Export)
⚙️ Technische Details
Systemanforderungen
- Browser: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
- Mobile: iOS Safari, Chrome Mobile, Samsung Internet
- JavaScript: Muss aktiviert sein
- Canvas-Support: Wird benötigt für Zeichnung
Architektur
- Single-File-Application: Komplett in einer HTML-Datei
- Keine externen Abhängigkeiten: Funktioniert offline
- Canvas API: Für performante Rendering
- JSON-Datenmodell: Einfach zu speichern und zu laden
- Event-driven: Reaktive UI-Updates
Datenmodell-Struktur
Das exportierte JSON enthält:
- entities: Array mit allen Entitäten (Name, Position, Attribute)
- relationships: Array mit allen Beziehungen (Name, Entitäten, Kardinalitäten, Rollen)
- displaySettings: Kardinalitäts-Parameter, Sidebar-Breite
- metadata: Editor-Version, Erstellungs-/Änderungsdatum, Autor
Kompatibilität
- Dateien aus älteren Versionen können geladen werden
- Fehlende Parameter werden mit Standardwerten ergänzt
- Neue Features sind abwärtskompatibel
https://erm.siemens-gymnasium-berlin.de gehostet. Netzwerkzugriff auf diese Domain ist erforderlich und erlaubt.
📋 Versionshistorie
Version 1.6.6 (Februar 2026) Aktuell
- 🗑 Beziehungen löschen: Kontextmenü-Option zum direkten Löschen von Beziehungen
- 🖼 PNG Export verbessert: Bounding-Box-Logik wie PDF - nur relevanter Bereich wird exportiert
- 📱 Tablet/Mobile Support: Zwei-Finger-Pinch-Zoom für Tablets und iPads
- 🎯 Smart Touch-Scrolling: preventDefault() nur bei echtem Drag - Scrolling funktioniert wieder!
Version 1.6.5 (Februar 2026)
- 🔄 AutoLayout Verbesserungen: Kompaktere Anordnung mit reduzierten Spacing-Werten
- 🐛 KRITISCHER FIX: Canvas-Overflow behoben - Entitäten werden nicht mehr herausgetrieben
- ✅ Canvas-Grenzen implementiert (max 1200x1000px)
- ⚡ Schwächere repulsive Forces und bessere Attribute-Positionierung
Version 1.6.4 (Februar 2026)
- 🖱️ Zoom-Fix: Mouse Events bei allen Browser-Zoom-Leveln funktionieren
- ✅
canvasXY()zoom-aware mitcurrentZoom-Faktor - 🔧 Alle Touch-Event-Handler konsistent aktualisiert
- 📱 Kontextmenü-Trigger funktioniert zuverlässig
Version 1.6.0 (Februar 2026)
- 🔄 AutoLayout: Force-directed Algorithmus für automatische Anordnung
- 🎯 Intelligente Attribut-Positionierung mit Lücken-Erkennung
- ✅ Primärschlüssel-Validierung: Warnung bei mehreren PKs pro Entität
- 📄 PDF-Export optimiert: DIN A4 mit Bounding-Box und auto-Orientierung
- 🔗 Links auf
erm.siemens-gymnasium-berlin.degesetzt - 🐛 Bugfix: Duplizierten JavaScript-Block entfernt (~280 Zeilen)
Version 1.5.2 (Januar 2026)
- 🎨 UI-Verbesserungen und Bugfixes
- 📝 Verbesserte Fehlerbehandlung
- 🔧 Performance-Optimierungen
Version 1.4.0 (Januar 2026)
- ✅ Verbessertes Validierungs-UI mit farbigen Badges
- 📋 Editierbares Datenmodell-Textfeld (vorher "Debug")
- 💾 Dynamische Dateinamen bei PNG/SVG/PDF-Export
- 🎨 Tool-Gruppierung mit farbigen Boxen
- 🔧 UTF-8 Encoding-Probleme behoben
- 📱 Verbesserte Touch-Unterstützung
Version 1.3.3 (Januar 2026)
- 🐛 SVG-Export Bugfixes
- 📝 README-Dokumentation aktualisiert
- 🔧 Stabilität-Verbesserungen
Version 1.2.1 (Januar 2026)
- 🎯 Revolutionäres 3-Parameter-System: Virtuelle Parallellinie für Kardinalitäten
- 📐 Intuitive Parameter: Senkrechter Offset, Abstand, Längs-Verschiebung
- 🔄 Automatische Anpassung für alle Orientierungen
- 📚 Umfangreiche Dokumentation mit ASCII-Diagrammen
Version 1.2.0 (Januar 2026)
- 🎛️ Dropdown-Interface für Kardinalitäts-Positionen
- ⚡ Live-Updates: Keine "Apply"-Buttons mehr nötig
- 🎯 5 Presets für verschiedene Orientierungen
- 🔧 Verbesserte Benutzerfreundlichkeit
Version 1.1.0 (Januar 2026)
- 🔄 Reflexive Beziehungen mit Rollenbezeichnungen
- 📐 Vektorbasierte Kardinalitäts-Positionierung
- 🎨 Kontextmenü für Bearbeitung
- 💾 Metadaten im JSON-Export
Version 1.0.1 (Januar 2026)
- 🎉 Erste stabile Version
- 📐 Chen-Notation vollständig implementiert
- 💾 Multi-Format Export (PNG, SVG, JSON)
- ✅ Live-Validierung
- 📱 Responsive Design