Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. ChartJS

Erstellen Sie ein dynamisches Dashboard mit ChartJS

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Heute werden wir mithilfe von ChartJS ein dynamisches Dashboard mit Live-Diagrammen erstellen. ChartJS ist eine leistungsstarke, abhängigkeitsfreie JavaScript-Bibliothek, die Diagramme über das Canvas-Element erstellt. Das Beste ist, dass Designer problemlos einsatzbereit sind. Wir konzentrieren uns auf die Teile der Bibliothek, mit denen Sie schnell schöne und funktionale Diagramme erstellen können. Wir werden von Anfang bis Ende ein mobilfreundliches Dashboard erstellen.

Suchen Sie eine schnelle Lösung?

Wenn Sie nach einer schnellen Lösung suchen, gibt es bei Envato Market eine großartige Sammlung von Diagramm- und Diagrammskripten. Ab nur wenigen Dollar können Sie diese Funktionalität schnell auf Ihre Website oder App übertragen. Hier ist einer unserer Favoriten - "Chartli" - zum Erstellen interaktiver Grafiken (die wunderschön aussehen!)


Loslegen

Wir werden unser Dashboard auf HTML5 Boilerplate aufbauen. Laden Sie die Zip-Datei herunter oder klonen Sie das Repository über Git. Wir werden unser Projektverzeichnis "chartjs_dashboard" nennen und alle Dateien direkt dort ablegen.

Als nächstes greifen wir zu ChartJS. Gehen Sie zur uminifizierten Version unter raw.github.com/nnnick/Chart.js/master/Chart.js und kopieren Sie den Inhalt in Ihre Datei js/plugins.js. Wenn Sie die nicht minimierte Version haben, werden Fehler besser lesbar, wenn Sie auf sie stoßen.

Tipp: In der Produktion würden Sie die minimierte Version des JavaScript verwenden, um das Dashboard leistungsfähiger zu machen.

Ihre Dateistruktur sollte folgendermaßen aussehen:

Hinweis: Einige der in H5BP enthaltenen Dateien, die wir nicht verwenden, sind nicht enthalten.


Farbpalette

Bevor wir uns mit der Codierung der Site befassen, richten wir zunächst eine Farbpalette ein, die wir im gesamten Design verwenden werden. Auf diese Weise können wir eine Art zukünftigen "Styleguide" erstellen. Dies ist eine gängige Praxis für grundsätzlich jedes Design.

Wenn Sie das Dashboard für eine bestimmte Marke erstellen, verwenden Sie zunächst die Farben der Marke. Heute werden wir zwei Hauptfarben und zwei Nebenfarben definieren. Wir werden auch Schattierungen oder ausgeblendete Versionen dieser Farben verwenden.

  • dunkelblau: #637b85
  • grün: #2c9c69
  • gelb: #dbba34
  • rot: #c62f29

Wir werden auch einen helleren dunkelblauen Farbton verwenden, #d0dde3. Zuletzt werden wir Graustufenfarben verwenden.


ChartJS-Grundlagen

ChartJS verwendet das Canvas-Element. Das Canvas-Element bietet eine Nur-JavaScript-Oberfläche zum Zeichnen von Pixeln in einen bestimmten Rechteckbereich. Es wird häufig mit SVG verglichen, das eine auf DOM-Knoten basierende Lösung zum Erstellen von Vektorgrafiken im Browser bietet. Auf das Canvas-Element gezeichnete Pixel werden jedoch nicht gespeichert und reagieren daher nicht auf JavaScript-Ereignisse.

Aber genug mit dem Tech-Talk - wie fangen wir schnell mit ChartJS an?

Glücklicherweise enthält die ChartJS-Homepage viele Beispiele, mit denen wir schnell loslegen können. Das Grundmuster besteht darin, das Canvas-Element in HTML zu erstellen, es mit JavaScript auszuwählen und das Diagramm zu erstellen, während die Daten übergeben werden, aus denen das Diagramm erstellt wurde.

Im obigen Beispiel wird davon ausgegangen, dass Sie "Daten" und "Optionen" als Objekte definiert haben, und es wird ein entsprechendes Liniendiagramm erstellt.

In unserem Beispiel verwenden wir das Donut-Diagramm, das Liniendiagramm und das Radar-Diagramm. Diese Diagramme stellen verschiedene geschäftsorientierte Metriken dar, aber natürlich können Sie diese verwenden und an Ihre Bedürfnisse anpassen.

Seiten-Markup

Beginnen wir mit der Definition von grundlegendem HTML für das Layout unserer Seite.

Hier können wir sehen, dass wir einen grundlegenden Kopf-, Mittel- und Fußzeilenabschnitt haben. Wir verwenden die Klassen .wrapper und .push, um eine klebrige Fußzeile zu erstellen (weitere Informationen finden Sie hier). Wir werden unser Layout so gestalten, dass es zuerst mobilfreundlich ist und von dort aus skaliert werden kann. Es gibt ein paar Tricks, die wir auf dem Weg ziehen werden, aber diese Struktur wird einen Großteil der Arbeit für uns erledigen.


Bevor wir zu weit gehen...

Beachten Sie, dass Canvas bei Medienabfragen nicht besonders gut funktioniert. In diesem Tutorial erstellen wir eine Problemumgehung, damit die Diagramme in JavaScript in verschiedenen Größen neu gezeichnet werden können.

In unserer Datei main.js benötigen wir eine Größenfunktion, die durch eine Größenänderung des Fensters ausgelöst wird. Wir benötigen auch eine "redraw"-Funktion, um nach dem Auslösen der Größenänderungsfunktion ausgelöst zu werden. Wenn wir die Diagramme neu zeichnen, möchten wir nicht, dass sie animiert werden, als ob dies das erste Mal ist, dass sie gezeichnet werden.

Wenn dies ein wenig entmutigend erscheint, machen Sie sich keine Sorgen! Stellen Sie eine Frage in den Kommentaren, und wir und die Tuts+ Community werden Ihnen helfen, alles zu verstehen!


Einige CSS für den Einstieg

Wir möchten einige grundlegende CSS-Strukturen einrichten, um uns den Einstieg zu erleichtern. HTML5 Boilerplate enthält natürlich Normalisierung und einige andere Standardeinstellungen, die Sie ändern können, aber für das Tutorial schreiben wir unser CSS nach der Zeile "Benutzerdefinierte Stile des Autors".

Hier definieren wir das erforderliche CSS für die Sticky-Fußzeile sowie eine Schaltflächenklasse, eine selbstzentrierende Containerklasse, eine Klasse zum Enthalten unserer Canvas-Elemente in unseren Widgets und unsere Widgets selbst. Wir müssen auch die Google-Schriftart hinzufügen, die wir für den Körper definieren, indem wir diese in unser Head-Tag aufnehmen.


Das Donut-Diagramm

Donut-Diagramme sind Kreisdiagrammen sehr ähnlich, außer dass sie einen Teil des mittleren Ausschnitts haben. Standardmäßig definiert ChartJS, dass 50% der Fläche des Diagramms weggelassen werden sollen. Wir werden bei dieser Standardeinstellung bleiben. Der Code zum Erstellen des Donut-Diagramms ist unten dargestellt.

Hier sehen Sie, dass wir die Daten und Farben unseres Donut-Diagramms definiert haben. Dies ist alles, was benötigt wird, damit das Donut-Diagramm funktioniert. Was repräsentieren die einzelnen Abschnitte? Leider hat ChartJS noch keine einfache Möglichkeit, Beschriftungen für das Donut-Diagramm zu definieren. Wir können jedoch eine eigene Legende erstellen, um die verschiedenen Abschnitte zu beschreiben. Ändern Sie das HTML des Donut-Widgets so, dass es Folgendes enthält.

Wir verwenden diese Li's von ihren Klassen sehr einfach im CSS, indem wir die Pseudoklasse `:before` nutzen.

Als nächstes wollen wir einen schönen "thumbs-up" in der Mitte des Donuts haben. Dies beinhaltet einige CSS-Tricks, einschließlich einer Version von Onkel Daves Ol' Padded Box, damit der Kreis reagiert. Wir werden die Spanne mit der Klasse .status verwenden, um diesen Kreis zu erreichen. Fügen Sie main.css die folgenden Regeln hinzu:

Das vielleicht auffälligste Element, das hier auffällt, ist die Verwendung des Daten-URI für das Hintergrundbild. Dies ermöglicht es uns, eine zusätzliche HTTP-Anfrage zu vermeiden und ist syntaktisch gleichbedeutend mit der Verwendung einer tatsächlichen http-URL. Wir setzen dieses Element auch so, dass es absolut innerhalb seines .widget-Elements positioniert ist, das wir zuvor als positionsrelativ festgelegt haben.

Lassen Sie uns nun die Widget-Typografie einrichten. Wir verwenden nur h3- und p-Elemente im Widget. hier ist das begleitende css.

Die Rand- und Auffüllregeln für das h3-Element ermöglichen es dem Element, sich bis zum Rand des Widget-Elements über den 12-Pixel-Abstand des Widgets zu erstrecken. Wir setzen auch den oberen Rand des p-Elements auf 0, um näher an die Kopfzeile des Widgets zu passen.


Das Liniendiagramm

Eine der nützlichsten Funktionen von ChartJS ist, dass einige der Diagramme mehrere Datensätze zulassen. Diese Datensätze werden nacheinander in dasselbe Diagramm gezeichnet, sodass ein Datensatz mit einem anderen verglichen werden kann. Ein perfektes Beispiel dafür sind Liniendiagramme. Wir werden zwei Datensätze verwenden, um diese Funktionalität zu untersuchen.

Ein paar Dinge, die in diesem neuen Code zu beachten sind: Zuerst verwenden wir die Variablen wieder, die wir zum Erstellen des Donut-Diagramms verwendet haben. Dies ist in JavaScript vollständig gültig und reduziert den vom Skript insgesamt verwendeten Speicher geringfügig. Dies kann jedoch in Zukunft zu Verwirrung führen. Wenn Sie diesen Code für die Verwendung in der Produktion anpassen möchten, ist es möglicherweise effektiver, für jedes neu erstellte Diagramm neue Variablen zu verwenden.

Als nächstes unterstützt das Liniendiagramm Beschriftungen. Dies ist wichtig, da wir so vermeiden können, HTML-basierte Legenden zu erstellen. Es ist jedoch auch wichtig, dass die Datenpunkte mit den angegebenen Beschriftungen übereinstimmen. In diesem Beispiel stimmt unser erster Datenpunkt im ersten Datensatz, 65, mit "Mon" in den Beschriftungen überein.

Schließlich sind unsere fillColors für diese Datensätze RGBa-Versionen der zuvor definierten Farben (dunkelblau und gelb). Wir haben die RGB-Werte durch Eingabe der Farben in den Farbwähler von Photoshop ermittelt. Dies kann jedoch mit einer Reihe von Farbauswahlwerkzeugen erfolgen.

Wir werden auch Markups für einige Schaltflächen und einen für Menschen lesbaren Bereich hinzufügen. Das HTML für die letzte Zeile sieht wie folgt aus.

Wir können den zusätzlichen HTML-Code verbessern und den Benutzern helfen, die Daten mit dem folgenden CSS zu verbinden:


Radardiagramm

Radardiagramme sind nützlich, um eine Auswahl von Variablen in ein einzeln lesbares Diagramm zu destillieren, um eine allgemeine Wahrnehmung des Zusammenspiels zwischen den verschiedenen Variablen zu erhalten. In unserem Beispiel untersuchen wir beispielsweise die Idee des Kundendienstes anhand der Häufigkeit, mit der bestimmte Schlüsselwörter erwähnt werden. In einem Radardiagramm bilden die gezeichneten Punkte eine Form. Diese Form kann uns ein allgemeines Gefühl für die Effektivität des Kundenservice geben.

Mal sehen, wie das entsteht! Wir werden unsere Variablen noch einmal von früher wiederverwenden.

Der zugehörige HTML-Code sieht folgendermaßen aus:

Intuitiv können wir verstehen, dass eine Form, die weiter oben und rechts ist, besser ist als eine Form, die weiter unten und links ist. Wir verlieren jedoch nicht die spezifischen Daten, die uns innerhalb des Diagramms auf einer granularen Ebene mit einer einzelnen Variablen zur Verfügung stehen. In diesem Fall wird das Wort "unhöflich" häufig erwähnt, aber der allgemeine Sinn für Kundenservice scheint aufgrund anderer Schlüsselwörter positiv zu sein.


Alles reaktionsschnell machen

Wir haben unsere Canvas-Elemente bereits so eingerichtet, dass sie mit dem JavaScript reagieren, mit dem wir auf die Größenänderung von Fenstern reagiert haben. Jetzt müssen wir unser CSS mithilfe von Medienabfragen reaktionsfähig machen. Hier ist das CSS, mit dem wir dies tun werden.

Das Erste, was Sie an diesem CSS bemerken sollten, ist, dass alle Medienabfragen nur auf der Mindestbreite basieren. Dies bedeutet, dass wir von den Bildschirmen mit der geringsten Breite aus entwerfen und neue Regeln hinzufügen, wenn wir nach oben gehen. Unser Design erfordert nicht viele Änderungen an jedem Haltepunkt, aber dieses Muster ist eine bewährte Methode für Designs aller Maßstäbe.

chartjs-small
chartjs-mid
chartjs-large

Wir können einige grundlegende Layoutänderungen an jedem Haltepunkt sehen, einschließlich der Breite des primären Containerelements sowie unserer Behandlung der .third Klasse, die wir für jedes der Widgets verwenden. Unter 400 stapeln wir alle Widgets übereinander. Zwischen 400 und 600 machen wir die ersten beiden Spalten mit half-width und das dritte Widget (das Radardiagramm) mit full-width. Schließlich verwenden wir über 960 drei Spalten inline.


Abschluss

Dieses Tutorial führt Sie durch die grundlegenden Schritte zum Erstellen eines Dashboards mit ChartJS. Die hier beschriebenen grundlegenden Konzepte sollen Ihnen helfen, mit ChartJS komplexere Projekte zu erstellen, und Sie dazu ermutigen, über Responsive Design aus der Perspektive von Bottom-up nachzudenken.

Welche Erfahrungen haben Sie mit Diagrammbibliotheken gemacht? Verwenden Sie SVG oder Canvas zum Zeichnen von Daten? Was wünscht du dir, würde ChartJS tun, was es nicht tut? Fügen Sie Ihre Kommentare unten hinzu!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.