Skip to main content

Chart.js charts for Wagtail

Project description

Wagtail Charts

Chart.js charts in Wagtail, edited and customised from the Wagtail admin

See it in action

wagtailcharts.webm

Getting started

Assuming you have a Wagtail project up and running:

pip install wagtailcharts

Add wagtailcharts to your settings.py in the INSTALLED_APPS section, before the core wagtail packages:

INSTALLED_APPS = [
    # ...
    'wagtailcharts',
    # ...
]

Add a wagtailcharts ChartBlock to one of your StreamFields:

from wagtailcharts.blocks import ChartBlock

class ContentBlocks(StreamBlock):
    chart_block = ChartBlock()

Include your streamblock in one of your pages

class HomePage(Page):
    body = StreamField(ContentBlocks())

    content_panels = Page.content_panels + [
        StreamFieldPanel('body'),
    ]

Add the wagtailcharts_tags templatetag to your template and call the render_charts tag just before your </body> closing tag. Please note that you must render your chart block so that the render_charts tag can detect the charts. Here is a tiny example of a page rendering template:

{% load wagtailcore_tags wagtailcharts_tags %}

{% block content %}
<div class="container-fluid">
    <div class="row">
        <div class="col-6">
            <h1>{{self.title}}</h1>
            <div class="excerpt">{{self.excerpt|richtext}}</div>
        </div>
    </div>
    {% for block in self.body %}
        {% include_block block %}
    {% endfor %}
</div>
{% endblock %}

{% block extra_js %}
{% render_charts %}
{% endblock %}

Configuration

ChartBlock accepts a few extra arguments in addition to the standard StructBlock arguments.

colors

A tuple of color tuples defining the available colors in the editor.

from wagtailcharts.blocks import ChartBlock

COLORS = (
    ('#ff0000', 'Red'),
    ('#00ff00', 'Green'),
    ('#0000ff', 'Blue'),
)

class ContentBlocks(StreamBlock):
    chart_block = ChartBlock(colors=COLORS)

chart_types

You can override the default chart types available for your ChartBlock instance:

from wagtailcharts.blocks import ChartBlock

CHART_TYPES = (
    ('line', 'Custom title for line chart'),
)

class ContentBlocks(StreamBlock):
    chart_block = ChartBlock(chart_types=CHART_TYPES)

The default types are:

CHART_TYPES = (
    ('line', 'Line Chart'),
    ('bar', 'Vertical Bar Chart'),
    ('bar_horizontal', 'Horizontal Bar Chart'),
    ('area', 'Area Chart'),
    ('multi', 'Combo Line/Bar/Area Chart'),
    ('pie', 'Pie Chart'),
    ('doughnut', 'Doughnut Chart'),
    ('radar', 'Radar Chart'),
    ('polar', 'Polar Chart'),
    ('waterfall', 'Waterfall Chart')
)

callbacks

Since ChartJS and the plugins have a plethora of options available, we will never be able to make them all available within the wagtail interface. That is why we added a chart config callback option.

CHART_CONFIG_CALLBACKS = (
    ('barchart_labels', 'Bigger font and bold labels'),
)

class ContentBlocks(StreamBlock):
    chart_block = ChartBlock(callbacks=CHART_CONFIG_CALLBACKS)

You then need to have a global function named the same (in this case 'barchart_labels') that returns an options object with the overrides/addons you want to add:

window.barchart_labels = function() {
    return {
        plugins: {
            datalabels: {
                font: {
                    size: 18,
                    weight: 'bold',
                },
                color: '#ff0000'
            }
        }
    }
}

Localize number formatting according to a specific locale

Wagtail chart formats numbers according to the browser's default locale by default from version 0.6 onwards. You can override this by setting a global javascript variable called WAGTAILCHARTS_LOCALE before calling the render_charts template tag:

{% load wagtailcharts_tags %}

<!-- Your content here -->

{% block extra_js %}
<script>WAGTAILCHARTS_LOCALE = 'is-IS';</script>
{% render_charts %}
{% endblock %}

Dependencies

Release notes

For release notes, visit this link

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wagtailcharts-0.6.3.tar.gz (282.0 kB view details)

Uploaded Source

Built Distribution

wagtailcharts-0.6.3-py3-none-any.whl (289.3 kB view details)

Uploaded Python 3

File details

Details for the file wagtailcharts-0.6.3.tar.gz.

File metadata

  • Download URL: wagtailcharts-0.6.3.tar.gz
  • Upload date:
  • Size: 282.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.6

File hashes

Hashes for wagtailcharts-0.6.3.tar.gz
Algorithm Hash digest
SHA256 9ceb7deb7af7fba851bcb1092ca4915343715615060f713c4a937d352a269a80
MD5 e8415d9a6aa7ff2021cecdc0aaff3f16
BLAKE2b-256 61fab9809ae498230419f30a5f764802e2a8634c2bd548c7cb893536ffd466ea

See more details on using hashes here.

File details

Details for the file wagtailcharts-0.6.3-py3-none-any.whl.

File metadata

File hashes

Hashes for wagtailcharts-0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fc88c61214051ef5dadc626c8819ebdcef2851c489277f56a673a98f40844591
MD5 e905bd956c6465d0d10d2b8d1ca39545
BLAKE2b-256 68111fd563e0ee258b98c487a9dfbef7e512751b251030d5c92db99ea26a4b3a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page