Create Charts with the awesome Chart.js Library
Project description
dj_chart
The goal of dj_chart is generate charts with the awesome Chart.js library.
Requirements
Django 1.9
Quickstart
Install dj_auth:
pip install dj_chart
Put dj_auth into your INSTALLED_APPS at settings module:
INSTALLED_APPS = (
...
'dj_chart',
)
TEMPLATES = [
{'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': (your dirs, ),
'APP_DIRS': True,
'OPTIONS': { },
},
]
Features
ChartMixin
You can use this Mixin for example with a Templateview or also ListView:
from django.views.generic import TemplateView
from dj_chart.views import ChartMixin
from .models import Fruits
class YourView(ChartMixin, Templateview):
chart_title_show = True
chart_title = u"Your Chart Title"
chart_types_available = [PIE, DOUGHNUT]
show_grid = False
def get_chart_data(self):
# populate self.chart_data
# Apples
self.chart_data['labels'].append("Apple")
self.chart_data['datasets'][0]['backgroundColor'].append("rgb(0,148,63)")
self.chart_data['datasets'][0]['data'].append(Fruits.filter(fruit_type=1).count())
# Pear
self.chart_data['labels'].append(Pear")
self.chart_data['datasets'][0]['backgroundColor'].append("rgb(222,6,19)")
self.chart_data['datasets'][0]['data'].append(Fruits.filter(fruit_type=2).count())
# Banana
self.chart_data['labels'].append("Banana")
self.chart_data['datasets'][0]['backgroundColor'].append("rgb(187,187,187)")
self.chart_data['datasets'][0]['data'].append(Fruits.filter(fruit_type=3).count())
def get_context_data(self, **kwargs):
context = super(YourView, self).get_context_data(**kwargs)
context = self.set_chart_context(context)
return context
Example with Dates on the x-axis:
from django.db import models
from django.views.generic import TemplateView
from dj_chart.constants import MONTH
from dj_chart.views import ChartMixin
class Category(models.Model):
description models.CharField(max_length=100, verbose_name='Decscription')
class Person(models.Model):
first_name = models.CharField(max_length=100, verbose_name='Firstname')
last_name = models.CharField(max_length=100, verbose_name='Lastname')
birthday = models.DateField(verbose_name=_(u'Birthday'))
category = models.ForeignKey(Category, verbose_name=_(u'Category'))
class ChartPie(ChartMixin, TemplateView):
chart_title_show = True
chart_title = u"My Chart"
chart_types_available = [PIE, DOUGHNUT, BAR]
show_grid = False
x_axis = MONTH
steps = 6
def get_chart_data(self):
if self.queryset:
self.set_labels_and_filter_values_for_xaxes(steps=self.steps, type=self.x_axis)
for label in self.chart_data['labels']:
self.label_urls[label] = {}
self.chart_data['datasets'] = []
for record in self.queryset:
qs = Person.objects.filter(category=record)
for i in range(1, len(self.filter_values)):
data.append(qs.filter(birthday__gte=self.filter_values[i - 1], birthday__lt=self.filter_values[i]).count())
self.label_urls["%s" % self.chart_data['labels'][i]]["%s" % record.description] = {"url": "%s" % reverse('your-url')}
def get_context_data(self, **kwargs):
context = super(ChartPie, self).get_context_data(**kwargs)
self.queryset = Category.objects.all()
context = self.write_chart_to_context(context)
return context
Todo
Python 3
Running Tests
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install -r requirements_test.txt (myenv) $ coverage run --source=dj_auth runtests.py && coverage html
Credits
Tools used in rendering this package:
History
0.1.0 (2016-10-05)
First release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dj_chart-1.1.10.tar.gz.
File metadata
- Download URL: dj_chart-1.1.10.tar.gz
- Upload date:
- Size: 63.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.24.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.6.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20f606a3c2f8fe84ea4575a450ebe8051311f2ec54a7724034b7c2435cbd20a7
|
|
| MD5 |
7e347cc6b3f273c86a0c39a5abc101af
|
|
| BLAKE2b-256 |
00750af438a792a8f7cee7bae10fb72b634ed07b512efd609b894c5ffc9d7d82
|
File details
Details for the file dj_chart-1.1.10-py2.py3-none-any.whl.
File metadata
- Download URL: dj_chart-1.1.10-py2.py3-none-any.whl
- Upload date:
- Size: 61.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.24.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.6.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
370bdaa245a8968c289da013850c185dfb24402948f034858da3170ba37a19ca
|
|
| MD5 |
23d0bcd46e7927595eface280bd46c33
|
|
| BLAKE2b-256 |
57677e8ca1a5d0f8f9f7d83b18c6d383e34c05778c1728f707336ae5375d65d2
|