Informationsarchitektur, Ansichtslogik, Interaktionen, Designsystem und offene Produktluecken.
- Archiv
- Indizes
- Mobilitaet
- Matrix
- Kosmos
- Wissenskorb
- Ueber (
about.html) — Projektueberblick, Methodik, Datenstand - Projekt (
projekt.html) — Quellenbeschreibung, Tektonik, Erfassung, Modellierung - Modell (
modell.html) — Ontologie (RiC-O + m3gim), Verknuepfungstypen, Statistik - Hilfe (
hilfe.html) — Bedienung, Interaktion, Datumskonventionen, FAQ - Impressum (
impressum.html) — Team, Foerderung, Datenschutz, Lizenz - Einheitliches Template: info-header, info-nav, info-main, info-footer
- Optimale Lesebreite 720px, Source Serif 4 Titel, Print-Styles
- Hash-basiertes Routing in
router.js(7 aktive Tabs: archiv, indizes, mobilitaet, zeitfluss, matrix, kosmos, korb) - Info-Seiten als eigenstaendige HTML-Dateien (normale Links, kein Hash-Routing)
- Deep Links fuer Views und Datensatzkontext
Alle 4 D3-Visualisierungen (Matrix, Kosmos, Mobilitaet, Zeitfluss) nutzen ein einheitliches Component-System:
.viz-toolbar/.viz-toolbar__row/.viz-toolbar__group/.viz-toolbar__label/.viz-toolbar__sep— Einheitliches Toolbar-Layout.phase-chip/.phase-chip--active— Lebensphasen-Buttons (mono-Font, Toggle-Zustand).viz-legend/.viz-legend__item/.viz-legend__sep/.viz-legend__hint— Legende unterhalb der Visualisierung.viz-tooltip/.viz-tooltip--visible— Dunkler Floating-Tooltip (opacity-Transition).viz-zoom-reset/.viz-zoom-reset--visible— Absolut positionierter Zoom-Reset im SVG-Container.ff-badges/.ff-badges__tag— Forschungsfragen-Annotation (rechtsbuendig, flex-shrink: 0).cross-link— Pill-foermiger Navigationslink fuer Cross-View-Drilldowns (Session 25).popup-item/.popup-item--secondary— Klickbare Aktionszeile in Kontext-Popups (Session 25)
buildFFBadges(...ffs)— Erzeugt FF-Badge-ContainerbuildPhaseChips(lebensphasen, onSelect, { labelMode })— Erzeugt Phase-Chip-Bar mit "Alle"-Button, liefert{ element, setActive, chips }buildCoverageFooter(text)— Erzeugt.data-coverage-ZeilecreateTooltip(container)— Floating-Tooltip-Controller mit Boundary-Clamping, liefert{ el, show, move, hide }(Session 24)setupD3Zoom({ svg, zoomGroup, container, scaleExtent, onZoom })— D3-Zoom+Pan mit Reset-Button, liefert{ zoom, resetZoom }(Session 24)viewLog(name, color)— Console-Diagnostik mit farbigem Gruppen-Header, liefert{ group, log, end }(Session 24)
loadPartitur(url)— Laedtpartitur.jsoneinmalig, cached, concurrent-safegetLebensphasen()— Liefert gecachte Lebensphasen (erfordert vorherigenloadPartitur()-Aufruf)
Alle Views folgen dem Schema: [.viz-toolbar] → [Visualisierung/SVG] → [.viz-legend] → [.data-coverage]
- Bestand und Chronik als zwei Perspektiven auf denselben Datenraum
- Klickbare Spaltenheader mit Sortier-Indikatoren (statt Dropdown)
- Autocomplete-Combobox fuer Personenfilter (statt Select mit 294 Optionen)
- Erweiterte Suche: Signatur, Titel, Dokumenttyp, Datum
- Unbearbeitete Objekte dezent markiert (opacity, Tooltip)
- Inline-Detailflaechen mit "Zum Wissenskorb"-Button
- Bookmark-Icons an jeder Zeile (Hover → sichtbar)
- Reset-Button ("x Zuruecksetzen") setzt alle Filter gleichzeitig zurueck (nur sichtbar bei aktivem Filter)
- Vier Grid-Bloecke: Personen, Organisationen, Orte, Werke
- Cross-Grid-Facettensuche: Klick auf Index-Eintrag filtert die anderen 3 Grids
- Kompakte Toolbar: Suche (flex: 1) + Facet-Chips auf einer Zeile
- Detail-Expansion auf 10 Records begrenzt + "Alle im Archiv anzeigen" Link
- Grid-Count zeigt gefilterte/total bei aktivem Filter
- Wikidata-Icons (Original-Barcode-Logo) bei Index-Eintraegen mit WD-ID
- WD-Coverage-Prozent in Index-Grid-Headern
Schwimmbahn-Timeline (D3.js) fuer Ira Malaniuks geografische Mobilitaet 1919–2009. Layer-basiert mit zuschaltbaren Schichten.
Datenquellen:
partitur.json: Lebensphasen, Orte (Wohnort/Auffuehrungsort/Lehrstaette), Mobilitaetsereignisse (5 Typen +kontext-Felder),auftritte[](60 Pipeline-extrahierte Events), Netzwerk-/Repertoire-/Dokumentdatenstore.locations+store.records: Gastspiel-Dots dynamisch aus Archivdaten extrahiert (Fallback)
Layer-Architektur (Session 25, E-41):
5 togglebare Layer via buildLayerChips() (Multi-Select):
| Layer | Default | Inhalt |
|---|---|---|
| mobilitaet | AN | Swim-Lane-Balken + Event-Marker + Gitterlinien |
| auftritte | AN | Aggregierte Auftritte-Dots ueber den Balken + Gastspiel-Section |
| netzwerk | AUS | Intensitaetsband am oberen Rand |
| repertoire | AUS | Komponisten-Zeitspannen |
| sparkline | AUS | Dokumente-pro-Jahr Flaechendiagramm |
Visualisierungselemente:
- Phasen-Baender — 7 Lebensphasen als alternierende Hintergrundfarben (immer sichtbar)
- Skalenbruch — Zigzag bei 1975 (immer sichtbar)
- Balken — Schmalere Balken (55% Lane-Hoehe, 30% Offset), KUG-Blau = Wohnort, Gold = Auffuehrungsort
- Event-Marker (E-42) — Vertikale Linien an Mobilitaetsereignis-Jahren mit gestaffelten Text-Labels (Stagger bei <55px Abstand), Richtungs-Chevrons, Flucht 1944 als einziges Signal-Rot
- Auftritte-Dots (E-45) — Aggregiert pro Ort+Jahr, Radius nach Dokumentanzahl, ueber dem Balken positioniert
- Gastspiel-Section — "Internationale Auftritte" unterhalb der Swim-Lanes
- 3-Farben-Schema: KUG-Blau (Wohnort/Engagement), Warm-Gold (Auffuehrungsort/Gastspiel), Signal-Rot (nur Flucht 1944)
Interaktion:
- Layer-Chips (buildLayerChips): Multi-Select-Toggle fuer 5 Schichten
- Phasen-Chip-Bar: filtert via
data-year/data-von/data-bisAttribute - Event-Marker: Hover zeigt kontext + Repertoire-Kontext, Klick aktiviert Fokus-Modus (Dimming)
- Auftritte-Dots: Hover zeigt Werk/Rolle/Ort/Kategorie, Klick → Archiv oder Popup
- Balken: Klick → Ort-Index, Shift+Klick → Matrix
- Doppelklick auf SVG: Reset Fokus-Modus
- FF-Badges (FF1, FF2, FF3, FF4) — alle 4 Forschungsfragen adressiert
Besonderheiten:
- Piecewise-linear Zeitskala: BREAK_YEAR=1975, BREAK_RATIO=0.74
- Lane-Hoehe 44px (breiter als andere Views), Balken im unteren Bereich positioniert
- Fokus-Modus:
.mob--event-dimmed(opacity 0.1),.mob--event-focused(hervorgehoben) - Peak-Annotation in Sparkline: Jahre ab 1995 als "Nachlass" markiert
Zwei alternative Mobilitaets-Visualisierungen als eigenstaendige HTML-Seiten (E-47):
Lebensstationen (lebensstationen.html, E-48): Scrollytelling mit 7 Kapiteln + 7 Wendepunkten. Sticky Mini-Timeline, 2-Spalten-Grid (Text + Ort-Schema-SVG), Stat-Cards (Netzwerk/Auftritte/Repertoire), Synthese-Section. IntersectionObserver fuer Scroll-Tracking.
Lebenspartitur (lebenspartitur.html, E-49): Vertikaler Bump-Chart (Zeitachse Y, Orte X). Durchgehende "Lebenslinie" mit farbkodierten Mobilitaetssprüngen. 3-Spalten-Grid: Netzwerk-Facette (links), Hauptchart, Repertoire-Facette (rechts). Synchronisierte Hover-Highlight-Linie ueber alle 3 Spalten.
Beide nutzen loadPartitur() Singleton (seit Session 26), D3.js v7, sind eigenstaendig (kein SPA-Router). CSS/JS in externe Module extrahiert (Session 26): css/lebensstationen.css, js/views/lebensstationen.js, css/lebenspartitur.css, js/views/lebenspartitur.js.
- Bookmark-Icons in Archiv (Bestand-Zeilen, Inline-Detail) und Indizes (Detail-Records)
- Korb-Tab immer sichtbar (auch bei 0 Items), Badge-Count bei >= 1
- Card-basierte Darstellung pro Record:
- Header: Signatur (klickbar → Archiv), Titel, Typ-Badge, Entfernen-Button
- Meta-Zeile: Datum, Sprache, Umfang, Status
- Verknuepfungen: Personen, Institutionen, Werke, Orte, Rollen als klickbare Chips
- Wikidata-Icons als klickbare Links wo vorhanden
- Konvolut-Info (Teil von Konvolut X)
- Cross-Navigation: Signatur-Klick → Archiv, Chip-Klick → Index
- sessionStorage-Persistenz (kein Server)
- Empty-State mit Lesezeichen-Icon und Anleitung
- Begegnungsstruktur als Heatmap (Person x Zeitraum, 5-Jahres-Perioden)
- Kategoriefilter (Dirigent, Regisseur, Korrepetitor, Kollege, Vermittler, Andere)
- Graz-Fokus-Toggle (
.phase-chip): Schnellfilter auf Graz-Dokumente (FF1) - Drilldown auf Dokumentliste mit Orts-Tags (Graz = gruen hervorgehoben) und Werk-Chips (klickbar → Kosmos)
- Peripherie-Chip "Malaniuk, Ira" → navigiert zur Mobilitaet (statt Indizes)
- Netzwerk-Sparkline ueber der Heatmap: 7 Perioden aus partitur.json mit Peak-Annotation
- Blaue Intensitaetsskala (KUG-Blau), gewichtet nach Dokumenttyp
- FF-Badges (FF1, FF3) und Datenabdeckungs-Zeile in
.viz-toolbar
- Repertoire-/Rollenbezug als deterministisches konzentrisches Layout (D3.js)
- Deterministisches konzentrisches Layout: Zentrum Malaniuk, Komponisten-Layer, Werk-Layer
- Fokus-Interaktionen (Komponist-Klick highlightet), Zoom/Pan, Drag
- Phasen-Chip-Bar: Filtert Nodes auf Lebensphasen, zeigt Genre-Ratio-Annotation (z.B. "LP6: 12 Opern · 5 Konzerte", FF2)
- Ort-Chips im Werk-Popup: Klickbare Ort-Chips mit Counts (FF3), navigieren zu Ort-Index
- Groesse nach Dokumentanzahl, Farbe nach Komponist (KOMPONISTEN_FARBEN)
- Volle Rollen-Anzeige im Tooltip und Popup (alle Rollen mit Counts statt nur Hauptrolle)
- Zoom-Reset-Button: nur sichtbar wenn gezoomt (
.viz-zoom-reset--visibleper Zoom-Handler) - Popup-Links: "→ Matrix", "→ Zeitfluss" fuer Cross-View-Navigation
- FF-Badges (FF2, FF3) und Datenabdeckungs-Zeile in
.viz-toolbar
Chronologischer Dot-Plot (D3.js) aller Werke nach Komponist, Gattung und Zeit.
Datenquelle:
kosmos.json: Strang-Daten mit Werken, Signaturen, Orten, Gattungen und Lebensphasen
Visualisierungselemente:
- Y-Achse: Komponisten (sortierbar nach Alphabet/Dokumentanzahl)
- X-Achse: Zeitstrahl (Premiere-Jahre der Werke)
- Dots: Groesse nach Dokumentanzahl, Form nach Gattung (Kreis = Oper, Raute = Konzert/Lied)
- Ort-kodierte Dot-Raender: Graz=#2E7D4F, Wien=#004A8F, Bayreuth=#9A7B4F, Salzburg=#6B4E8C, Muenchen=#4A6E96 (FF3)
- Phasen-Baender als Hintergrund (7 Lebensphasen)
- Section-Divider zwischen Komponisten-Gruppen
Interaktion:
- Gattungs-Chips: Filtern nach Oper/Konzert/Lied/Operette
- Phasen-Chip-Bar: Smooth-Zoom auf gewaehlte Lebensphase
- Sort-Toggle: Wechsel zwischen alphabetischer und Dokumentanzahl-Sortierung
- Hover:
.viz-tooltipmit Werkname, Gattung, Orten, Signaturen - Klick auf Dot → Archiv-Tab (Signatur)
- Shift+Klick auf Dot → Kosmos mit Komponist-Highlight
- Y-Label klickbar → Indizes (Personen-Index)
- Zoom/Pan mit D3-Zoom,
.viz-zoom-resetnur bei aktivem Zoom sichtbar - Navigation-Listener (
m3gim:navigate): Hervorhebt Komponist bei Cross-View-Navigation
Highlight-System (refactored Session 26):
activeHighlightState-Variable (pendingHighlight durch Event-Bus ersetzt)- Cross-View Navigation via
onViewNavigate('zeitfluss', handler)ausevents.js(Auto-Replay) highlightKomponist()/clearHighlight()Funktionen- Doppelklick auf SVG → Highlight aufheben
- CSS:
.zeitfluss-ylabel--highlighted(fett, KUG-Blau)
- Funktionale Farbsemantik: KUG-Blau (#004A8F, Interaktion), Signal-Gruen (Verknuepfung), Neutral-Grau (Abwesenheit), Warmer Hintergrund (Struktur)
- Typografische Rollen fuer UI, Titel und Signaturdarstellung
- Konsistente Abwesenheitsdarstellung fuer fehlende Erschliessungsangaben
- CSS Custom Properties als Design-System
- Archiv und Indizes: Quellenbezug und Nachvollziehbarkeit
- Matrix: Netzwerk- und Zeitmuster
- Kosmos: Repertoire- und Rollenprofil
- Mobilitaet: Geografische Mobilitaetsanalyse (FF4)
Vollstaendiges Navigationsnetzwerk zwischen allen 4 Visualisierungen + Archiv + Indizes:
| Von \ Nach | Matrix | Kosmos | Zeitfluss | Mobilitaet | Indizes | Archiv |
|---|---|---|---|---|---|---|
| Matrix | — | Drilldown | Drilldown | Peripherie-Chip (Malaniuk) | Name-Klick | Sig-Klick |
| Kosmos | Popup-Link | — | Popup-Link | — | Popup-Link | — |
| Zeitfluss | — | Shift+Klick Dot | — | — | Y-Label-Klick | Dot-Klick |
| Mobilitaet | Shift+Klick Bar | — | Repertoire-Diamond-Klick | — | Bar-Klick | Dot-Klick |
- Router:
navigateToView(tab, context)als generische Cross-View-Funktion - Event-Bus (Session 26):
events.js—onViewNavigate(tab, handler)mit Auto-Replay fuer noch nicht gerenderte Views. Ersetzt verteiltewindow.addEventListener('m3gim:navigate')in kosmos.js, zeitfluss.js, archiv.js - Custom Event:
m3gim:navigatemit{ tab, komponist }fuer Highlight-Kontext (dispatched by router, consumed by event-bus) - Wissenskorb: CSV- und BibTeX-Export-Buttons
- Matrix-Zeitzoom, erweiterte Index-Hierarchien (deferred)
- Leaflet-Karte (deferred)
- Datenabdeckung bleibt dominierender Qualitaetshebel (22% verknuepfte Objekte)