Benutzer:PerfektesChaos/js/tableXpander

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
|}===={|

JavaScript Gadget – Berechnungen und Hilfsfunktionen werden für Datentabellen angeboten.

Zweck[Bearbeiten | Quelltext bearbeiten]

In Datentabellen auf Wiki-Seiten ist es gelegentlich erforderlich,

  • die Summe aller Zahlen in einer Spalte oder Zeile zu bilden,
  • den entsprechenden Durchschnittswert dieser Zahlen auszurechnen,
  • ein Ranking zu überprüfen oder die Anzahl der Zellen in einer Spalte oder Zeile zu ermitteln,
  • Inhalte einer Spalte oder Zeile zur Weiterverarbeitung kopieren.

Beispiele:

Einbindung[Bearbeiten | Quelltext bearbeiten]

Es gibt zwei Möglichkeiten:

  • Nur eine Verlinkung in der Toolbox und Start des eigentlichen Werkzeugs erst auf Anforderung
  • Komplettes Werkzeug für die aktuelle Seite starten.

Auf Anforderung[Bearbeiten | Quelltext bearbeiten]

Füge die folgende Zeile in die persönliche common.js, global.js etc. ein:

mw.loader.load( "https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/tableXpander/scout/r.js&action=raw&maxage=86400&ctype=text/javascript" );

In der (Desktop) Toolbox erscheint |}===={| auf allen Seiten, durch Anklicken kann das eigentliche Werkzeug bei Bedarf gestartet werden.

Vollprogramm[Bearbeiten | Quelltext bearbeiten]

Starte den nachstehenden Code wann immer du möchtest:

mw.loader.load( "https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/tableXpander/r.js&action=raw&maxage=86400&ctype=text/javascript" );

Non-MediaWiki-Seiten[Bearbeiten | Quelltext bearbeiten]

Das Werkzeug kann grundsätzlich auch ohne eine MediaWiki-Umgebung gestartet werden. Während MediaWiki nicht benötigt wird, ist jQuery erforderlich. Das Gadget kann mit geeigneten Mitteln geladen werden, falls in window.jQuery eine solche Bibliothek (irgendeiner Version) präsent ist.

Arbeitsgang[Bearbeiten | Quelltext bearbeiten]

Nachdem das eigentliche Werkzeug angefordert wurde, kann es einige Sekunden dauern.

  • Danach wird im Seitenkopf eine Box eingefügt.
  • Diese Box enthält:
    • Verlinkungen auf diese Dokumentation,
    • eine Versionsnummer,
    • eine Auswahl an Zahlenformaten,
    • eine Liste von Verlinkungen auf geeignete Datentabellen, die in dieser Seite gefunden wurden.

Alle zunächst als geeignet erscheinenden Datentabellen werden mit einem Aktivierungsfeld |}===={| in der Überschrift ausgestattet.

Wenn eine Datentabelle expandiert werden soll, ist das Aktivierungsfeld anzuklicken. Danach geschieht entweder:

  • es werden oberhalb und links Streifen eingefügt (Ausstattung), oder
  • es zeigte sich bei genauerer Analyse, dass es doch keine geeignete Tabelle ist, weil keine Inhalte gefunden wurden, die verarbeitet werden können.

Das Aktivierungsfeld wird in jedem Fall entfernt.

Das Erscheinungsbild und die Dekoration innerhalb der Seite wird sich ändern, und die Sortierung der expandierten Tabellen funktioniert ggf. nicht mehr korrekt. Es gibt keine Möglichkeit, in dieser Seite auf den vorherigen Zustand zurückzukehren, als die Seite neu zu laden. Durch tableXpander-Ausstattung könnte die Seite und einige Tabellen etwas unaufgeräumt aussehen, bis neu geladen wurde.

Das Werkzeug ist nicht auf die Art der Seite, einen Namensraum, ein Wiki oder eine bestimmte URL beschränkt.

Arten der Tabellen[Bearbeiten | Quelltext bearbeiten]

Nur Datentabellen werden ausgestattet.

  • Layout-Tabellen“ machen nichts anderes als Elemente der Seite dekorativ zu arrangieren.
  • Das steht im Konflikt mit der Barrierefreiheit und dynamischer Anpassung an die aktuelle Gerätesituation bei den Lesern.
  • Solche Layout-Tabellen werden von diesem Werkzeug ignoriert.

Eine Datentabelle benötigt:

  • Eine Kopfzeile, oder
  • wenigstens eine Kopfzelle in der ersten Spalte.

Es kann vorkommen, dass eine Tabelle dem ersten Anschein nach als Datentabelle eingestuft wurde, es sich aber beim Aktivierungsversuch herausstellt, dass keine Dateninhalte vorhanden sind. Dann wird diese Eigenschaft zurückgezogen.

Arbeit mit einer bestimmten Datentabelle[Bearbeiten | Quelltext bearbeiten]

Nachdem für eine Tabelle die Ausstattung mit tableXpander angefordert wurde, wird oberhalb des Tabellenkopfes und links des Tabellenbereichs je ein Streifen mit |}===={| Schaltelementen eingefügt.

  • Wenn nichts eingefügt wurde, waren keine Daten zu finden.
  • Nachdem eines dieser Schaltelemente angeklickt wurde, wird die entsprechende Spalte oder Zeile ausgewählt und erhält die gleiche Hintergrundfarbe wie das Schaltelement.
  • Das Schaltelement wird ersetzt durch eine Auswahl an Funktionen: # Σ Ø % ↕
  • Jede Datenzelle wird mit einem Umschalter ausgestattet, [-] zum Entfernen sowie Zurücksetzen durch [+] und ermöglicht es damit, Zellen aus der Auswahl zu löschen oder wieder hinzuzunehmen.
  • Im Eckfeld oben links ermöglicht ein X die gesamte Auswahl zurückzusetzen.
  • Sobald eine andere Spalte oder Zeile ausgewählt wird, ist die vorherige Auswahl automatisch deaktiviert.

Die Funktionssymbole haben folgende Bedeutung:

Symbol Funktion Darstellung
# Ranking und Durchzählen 1 innerhalb des Datenfeldes
Σ Addition 12345 unterhalb der Schaltelemente
Ø Durchschnitt 5.45789012 unterhalb der Schaltelemente
% Prozent 1,75% innerhalb des Datenfeldes

Copy & Paste
(Spalte oder Zeile, je nachdem)
Extrabox im Seitenkopf scrollbar

Beispieldarstellung (simuliert) für die Summe in einer ausgewählten Spalte:

X |}===={| # Σ ø % ↕
91
|}===={|
Dies Das Jenes
|}===={| 10 20  [-] 30
|}===={| 5 15  [-] 25
|}===={| 2 56  [-] 3
|}===={| 17 91  [+] 58

Verbundene Zellen und Sortierung[Bearbeiten | Quelltext bearbeiten]

Wenn neben- oder übereinanderliegende Zellen zu einer verbunden sind, werden sie von tableXpander auch nur einmal gewertet.

  • Sie werden als Bestandteil jeder Spalte oder Zeile aufgefasst, in die sie hineinreichen.

Beachte, dass die MediaWiki-Sortierfunktion, nachdem erstmals für diese Tabelle aktiviert, die verbundenen Zellen aufteilt und entsprechend mehrfach einfügt, bis ein regelmäßiges Gitter entsteht. Wird anschließend eine Addition oder die Anzahl der Zellen ermittelt, erscheinen diese Werte mehrfach.

Inhalte der Zellen[Bearbeiten | Quelltext bearbeiten]

Grundsätzlich wird im Regelfall nur der Inhalt einer Zelle herangezogen.

  • Das bedeutet: Textauszeichnung beeinflusst die Inhalte nicht, also etwa durch Fettschrift, Hoch- und Tiefstellung usw.
  • Umgekehrt heißt das aber: Wenn Teile des Inhalts unsichtbar gemacht werden, etwa durch veraltete Methodik zur Tabellensortierung oder um mit Vorlage:0 Lücken zu produzieren, dann ist das weiterhin Inhalt der Zelle, egal ob optisch wahrnehmbar oder nicht.

Eine ganze Zelle kann mit dem Schalter [-] aus der aktuellen Auswahl entfernt und anschließend mit [+] wieder hinzugefügt werden.

Numerische Inhalte[Bearbeiten | Quelltext bearbeiten]

Für Berechnungen werden etwas größere Anstrengungen unternommen:

  • Falls ein data-sort-value einer Tabellenzelle zugeordnet ist, wird dieser Wert herangezogen und nicht der Inhalt.
  • Das bedeutet: Es kann data-sort-value="5" spezifiziert sein, jedoch ist der Inhalt der Zelle Fünf – dann wird trotzdem die Zahl 5 verwendet und nicht der sichtbare Inhalt.
  • Nach der ersten numerischen Auswertung werden die effektiv verwendeten Inhalte solcher data-sort-value dann auch als Tooltip angezeigt.
  • Bei nicht-numerischen Datentypen geht dies jedoch nicht, da die gebildeten und erforderlichen Sortierschlüssel oft stark die Inhalte verfälschen würden.
  • Es wird versucht, optisch ausgeblendete Inhalte zu unterdrücken.

Zahlen werden anhand der wirksamen Zuweisung, sei es data-sort-value oder Zelleninhalt, nach folgenden Regeln interpretiert:

  • Alle bekannten Typen von Weißraum am Anfang werden ignoriert, wenn er den Ziffern vorangeht oder zwischen einem Vorzeichen und der ersten Ziffer auftritt; das können auch HTML-Entities sein.
  • Vorzeichen können der Zahl vorangestellt sein. Das deckt ab:
    • ASCII-Minuszeichen - (U+002D).
    • ASCII-Pluszeichen + (U+002B).
    • Typografisches Minuszeichen (U+2212).
    • Vollbreite Plus-/Minuszeichen (U+FF0B / U+FF0D) können benutzt werden, zumindest wenn sie von Ziffern desselben Schriftsystems gefolgt werden.
  • Ziffern können aus dem üblichen ASCII-Zeichensatz U+0030…U+0039 (0-9) entnommen werden.
    • Einige Dutzend Ziffern asiatischer Schriftsysteme können genauso verwendet werden, falls diese eine Abfolge von Null bis Neun abbilden (nur diese werden erkannt) und innerhalb einer Zahl konsistent benutzt werden.
  • Wissenschaftliche oder exponentielle Zahlendarstellung kann verwendet werden; das bedeutet etwa: 1.234E-34 (oder Kleinschreibung e).
  • Die Interpretation der Zahl wird beendet, sobald ein Zeichen, etwa ein normales Leerzeichen, angetroffen wird, das nicht in der aktuell wirksamen Zahlenformatierung enthalten ist.
  • Beachte, dass der vollständige Inhalt der Zelle zählt. Wenn die seit 2012 veraltete Methode zur Tabellensortierung benutzt wurde, kann dies dazu führen, dass der sichtbaren Zahl unsichtbare Inhalte vorangestellt werden, welche die Berechnung stören.

Zahlenformatierung[Bearbeiten | Quelltext bearbeiten]

Es gibt verschiedenste Systeme in der Welt, um die Trennung der Dezimalstellen („Nachkomastellen“) zu kennzeichnen, und auch ggf. die Ziffern in Dreier- (Tausender) oder Vierergruppen lesbar zu strukturieren.

  • Abhängig von der Kenntnis des beabsichtigten Formatierungsschema kann der Wert einer Zahl sich dramatisch ändern: 1,234 wird englischsprachig als Tausendzweihundert gelesen, jedoch weniger als Anderthalb beispielsweise in deutschsprachigem Kontext wo das Komma , als Dezimaltrennzeichen verwendet wird.

Die nachstehenden Formatierungsschemata werden im Seitenkopf angeboten. Sie können jederzeit umgeschaltet werden und werden für die nächste Interpretation bei einer Berechnung angewendet.

Bekannte Zahlenschemata
Muster Dezimal Gruppierung Anmerkungen
0,000.00 Punkt . U+002E Komma , U+002C Üblich in englischer Sprache und zumindest der Punkt Standard in Programmiersprachen
0.000,00 Komma , U+002C Punkt . U+002E Beispielsweise deutschsprachig
0'000,00 Komma , U+002C Apostroph ' U+0027 Schweizer Stil
0▯000.00 Punkt . U+002E nbsp U+00A0 Geschütztes Leerzeichen zur Gruppierung
0□000.00 Punkt . U+002E nnbsp U+202F Schmales geschütztes Leerzeichen zur Gruppierung
0▯000,00 Komma , U+002C nbsp U+00A0 Geschütztes Leerzeichen zur Gruppierung
0□000,00 Komma , U+002C nnbsp U+202F Schmales geschütztes Leerzeichen zur Gruppierung

In einer MediaWiki-Seite wird versucht, den Projektstandard für die Zahlenformatierung beim ersten Laden einer Seite mit Werkzeugnutzung zu ermitteln.

Falls das erfolgreich war, wird es als Standard für diese Seite vorgegeben.

Andernfalls ist das englischsprachige Format mit Punkt als Dezimaltrenner Standard, wie auch von Computerprogrammen erwartet.

Um die Performance zu verbessern wird versucht dieses Schema als localStorage für diese Domain im Browser zu hinterlegen.

Funktionen[Bearbeiten | Quelltext bearbeiten]

Das # Σ Ø % ↕ Schaltelement bietet die nachstehenden Aktivitäten für die ausgewählte Spalte oder Zeile an.

Ranking und Durchzählen[Bearbeiten | Quelltext bearbeiten]

# löst das Durchnummerieren der momentan aktiv ausgewählten Zellen aus.

  • Jeder Datenzelle wird eine laufende Nummer in einem kleinen Kasten vorangestellt: 123
  • Die Gesamtzahl der aktiven Zellen wird beim Schaltelement angezeigt.
  • Wenn aus den aktiven Zellen durch [-] etwas entfernt oder durch [+] wieder hinzugefügt wird, so werden Nummerierung und Gesamtzahl sofort aktualisiert.

Arithmetik[Bearbeiten | Quelltext bearbeiten]

Summe[Bearbeiten | Quelltext bearbeiten]

Σ startet die Addition der numerischen Inhalte aller aktiv ausgewählten Zellen die als numerische Werte erkannt wurden.

  • Zellen die nicht als numerisch eingestuft wurden werden automatisch aus dem Satz ausgewählter Zellen entfernt.
  • Die momentane Summe wird beim Schaltelement angezeigt.
  • Wenn aus den aktiven Zellen entfernt wird durch [-] oder wieder hinzugefügt durch [+] so wird die Summe sofort aktualisiert.

Durchschnitt[Bearbeiten | Quelltext bearbeiten]

Ø berechnet das arithmetische Mittel, also den Durchschnittswert.

  • Die Funktion ist mit der Summenbildung identisch, jedoch dividiert durch die Anzahl aktiver Zellen, sofern vorhanden (Null wenn keine).

Prozent[Bearbeiten | Quelltext bearbeiten]

% berechnet den prozentualen Anteil der einzelnen Zellen an der Gesamtsumme.

  • Jeder Datenzelle wird die ermittelte Prozentzahl in einem kleinen Kasten vorangestellt: 3,14%
  • Die Funktion zeigt zudem in der Kopfzelle die rechnerische Summe der ausgewählten Zellen an.
  • Bei negativem Saldo und/oder alternierenden Zelleninhalten ergeben sich entsprechend negative Werte. In erster Linie ist jedoch an positive Zahlen gedacht.

Die Funktion ist dafür vorgesehen, die Prozentangaben in einer (anderen) Spalte gegenzuchecken.

  • Beispiele:
    • In der ersten Spalte möge die Bevölkerungszahl nach Religion, oder die Stimmen für eine Partei angegeben sein; in der zweiten Spalte ist bereits der Prozentwert genannt. Nun kann auf die erste Spalte die Prozentfunktion angewendet und geprüft werden, ob das zur zweiten Spalte passt.
    • Oder die Prozentfunktion auf die zweite Spalte anwenden; da muss sich 100 ergeben und jeder Prozentwert übereinstimmen. Wenn nicht dann ist irgendwo ein Fehler.

Copy & Paste[Bearbeiten | Quelltext bearbeiten]

(für eine Spalte) oder (für eine Zeile) fügt im Beginn der Seite ein Textfeld ein.

  • In diesem Feld werden die Inhalte der aktiv ausgewählten Zellen aufgelistet.
  • Jede Zelle wird als einzelne Zeile angezeigt; ggf. mit Normalisierung von Zeilenumbrüchen und speziellem Weißraum.
  • Das kann dann durch Copy & Paste abgegriffen und nach Belieben weitergenutzt werden.

Cookies[Bearbeiten | Quelltext bearbeiten]

localStorage wird verwendet, um sich das Schema zur Zahlenformatierung im aktuellen Projekt zu merken.

Internationalisierung[Bearbeiten | Quelltext bearbeiten]

Es sind keine Anpassungen der Software erforderlich, da sprach- und schriftbezogene Texte bewusst vermieden wurden.

Eine Übersetzung dieser Dokumentation darf gern angeboten werden.

Die Software hängt nicht von Schriftsystemen oder Schreibrichtung ab und unterstützt auch Nicht-ASCII-Ziffern.

Codes[Bearbeiten | Quelltext bearbeiten]

Siehe dazu die englischsprachige Version dieser Seite.