Diskussion ⟀
Drei- und mehrdimensionale Listen
Sollen Zuordnungslisten mit mehr als zwei Schlüsselwörtern pro Eintrag erlaubt werden, siehe Beispiel am Ende von /2015/tabelle-im-texteditor/, und wie sollen sie dargestellt werden?
Die Eingabe ist aufwendig, da Schlüsselwörter in der Aneamal-Syntax im Gegenzug zu Robustheit und Verständlichkeit bei höheren Dimensionen immer öfter wiederholt werde müssen.
Beachte auch, dass Bildschirme nur zwei Raumdimensionen haben und Hologramme nur auf drei zurückgreifen.
Vlt hilft bald CSS mit Motion Möglichkeiten? So ein Cube wäre schon kuhl!
Ja, ein rotierender Würfel wäre fein, aber vermutlich nur bei ganz kurzen Daten im Würfel.
Wenn die Einträge im Würfel aber lang sind (in einem Tabellenfeld kann ja auch sehr viel Text stehen), dann wird das völlig unübersichtlich. Man könnte dann nur eine Abkürzung sehen und diese erst ausschreiben, wenn jemand auf jenes Feld im Würfel klickt …? Hm, für ernsthafte Anwendungen eher Spielerei.
Vielleicht sollte man verschiedene Möglichkeiten zur Darsetllung der Daten zur Auswahl anbieten. Eine als Würfel, eine andere als Tabelle mit zusätzlichen Tabs für die dritte Dimension …
Man könnt so etwas auch Zusatzmodulen überlassen.
Hier mal ein Beispiel mit Zahlen. Die folgende Liste gibt für alle möglichen Kombinationen der drei Zahlen -1, 0 und 1 das Produkt wieder:
<-1><-1><-1> -1
<-1><-1><0> 0
<-1><-1><1> 1
<-1><0><-1> 0
<-1><0><0> 0
<-1><0><1> 0
<-1><1><-1> 1
<-1><1><0> 0
<-1><1><1> -1
<0><-1><-1> 0
<0><-1><0> 0
<0><-1><1> 0
<0><0><-1> 0
<0><0><0> 0
<0><0><1> 0
<0><1><-1> 0
<0><1><0> 0
<0><1><1> 0
<1><-1><-1> 1
<1><-1><0> 0
<1><-1><1> -1
<1><0><-1> 0
<1><0><0> 0
<1><0><1> 0
<1><1><-1> -1
<1><1><0> 0
<1><1><1> 1Drei Dimensionen mit jeweils drei Argumenten ergibt 3³ = 27 Datenfelder. In Aneamal ist man aber nicht genötigt, alle Kombinationen aufzuführen, wenn man sie nicht braucht. Wenn ich zum Beispiel dazusage, dass Multiplikation kommutativ ist, reichen zehn Felder, um alle Kombinationen abzuhandeln:
<-1><-1><-1> -1
<-1><-1><0> 0
<-1><-1><1> 1
<-1><0><0> 0
<-1><0><1> 0
<-1><1><1> -1
<0><0><0> 0
<0><0><1> 0
<0><1><1> 0
<1><1><1> 1In einer Würfeldarstellung gäbe das freilich einen nur teilgefüllten Würfel.
Ich würde in einer zukünftigen Version von Aneamal gern eine Darstellung mit mehreren Tabs (als 1 Dimension), auf denen jeweils Tabellen (mit zwei Dimensionen) zu finden sind, ausprobieren.
Zu überlegen wäre, wie man die Tabs in HTML+CSS sinnvoll umsetzt. Es gibt für Tabs ja keine HTML-Elemente. Das ganze sollte zudem auch ohne CSS noch immer sinnvoll lesbar sein, wenn auch evtl. dann nicht mehr in Tabs, sondern die Tabellen untereinander.
Hier ein kurzes Beispiel:
<T><N><O> Mercury
<T><N><E> Venus
<T><A><O> Earth
<T><A><E> Mars
<G><N><O> Jupiter
<G><A><E> Saturn
<G><A><O> Uranus
<G><N><E> Neptune(T: terrestrial planet, G: gas planet; A: contains the letter "a", N: does not contain the letter "a"; O: odd planet number when counting from the middle of the solar system, E: even planet number)
Das Beispiel aus @6 umgesetzt in einem Entwurf, der nur mit einer Tabelle, aber mehreren <tbody>s operiert: https://prlbr.de/vh
Ist noch nicht überzeugend.Das Beispiel aus @6 umgesetzt mit Tabs: https://prlbr.de/6m
Aber bei deaktiviertem CSS irritieren die dann sichtbaren Radio-Buttons mit ihren <label>s.@8: Die Radio-Buttons kann man auch bei deaktiviertem CSS per HTML-Attribut hidden ausblenden. Bleiben noch die <label>s …
Es gibt Richtlinien fürs barrierefreie Implementieren von Tabs
https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-1/tabs.html
und Hinweise, dass die Praxis nicht so barrierefrei aussieht
https://simplyaccessible.com/article/danger-aria-tabs/Hier verbesserte Varianten des Beispiels aus @7: https://prlbr.de/7m
Example 1a/1b gefallen mir dabei besser als Example 2 – zwischen 1a und 1b wäre noch zu entscheiden.
Wenn man die Technik aus Example 1 und 2 kombiniert, kann man vier Dimensionen realisieren.
Ich denke, die Idee eines rotierenden Würfels ist cool, aber meist unpraktikabel und zu speziell für die allgemeine Syntax im Aneamal-Kern. Benötigt vermutlich JavaScript. So etwas könnte man mit einem Modul realisieren.
Die Idee mit den Tabs ist cool, aber derzeit in HTML nur mit Frickelei zu realisieren. Soll man darauf warten, dass HTML eigene Elemente für Tabs einführt? Vorgeschlagen wurde es: https://github.com/whatwg/html/issues/1809 – vermutlich nicht zum ersten Mal in der Geschichte. Falls Tabs in HTML kommen, könnte man aber überlegen, ob Tabs auch allgemein in Aneamal ermöglicht werden könnten – also auch für andere Inhalte als Teile mehrdimensionaler Listen in Tabellenform. Wenn die Antwort ja lautet, wäre es überflüssig, auch mehrdimensionale Listen in Tabs zu übersetzen.
Der verbesserte Vorschlag aus @11 ist solide und jetzt in HTML realisierbar für 3 und 4 Dimensionen. Ich neige dazu, das zu implementieren.
Example 1a ist in @11 gegenüber Example 1b vorzuziehen. Example 1a würde eine intuitive Interpretation ermöglichen, wenn die Anzahl der Tags in gewissen Grenzen uneinheitlich ist. So wäre
<T><N><O> Mercury
<T><N><E> Venus
<T><A><O> Earth
<T><A><E> Mars
<G><N> Jupiter
<G><A> Saturnnaheliegenderweise als https://prlbr.de/am zu interpretieren.
[dieser Beitrag wurde nachträglich korrigiert]
Zuordnungslisten mit bis zu vier Tags pro Eintrag und Einträgen mit unterschiedlicher Anzahl von Tags werden in Version 28 unterstützt.
Möglich wäre, die in Aneamal 28 ausgelieferte Unterstützung mehrdimensionaler Listen in Zukunft in ein Modul auszulagern (z. B. list.php), welches standardmäßig bei Aneamal dabei ist, aber von Nutzern auch durch ein anderes Modul (z. B. /list/ analog zu /math/) ersetzt werden kann.
Möglich wäre auch, dass diese Module dann nicht nur Listen mit gemischter Tagzahl, wo die Tags am Ende weggelassen werden …
<T><A><E> Mars
<G><A> Saturn… unterstützen, sondern auch solche, bei denen ein anderes Tag ausgelassen wird, repräsentiert durch ein leeres Tag:
<T><A><E> Mars
<G><><E> SaturnIch schließe die Diskussion, da bis zu vierdimensionale Zuordnungslisten implementiert wurden.