=============================
django_charts
.. image:: https://badge.fury.io/py/acdh-django-charts.svg
:target: https://badge.fury.io/py/acdh-django-charts
.. image:: https://travis-ci.org/acdh-oeaw/acdh-django-charts.svg?branch=master
:target: https://travis-ci.org/acdh-oeaw/acdh-django-charts
.. image:: https://codecov.io/gh/acdh-oeaw/acdh-django-charts/branch/master/graph/badge.svg
:target: https://codecov.io/gh/acdh-oeaw/acdh-django-charts
An app to explore your data through charts based on Highcharts.js
Documentation
The full documentation is at https://acdh-django-charts.readthedocs.io.
Quickstart
Install django_charts::
pip install acdh-django-charts
Add it to your INSTALLED_APPS
:
.. code-block:: python
INSTALLED_APPS = (
...
'charts',
...
)
Add django_charts's URL patterns:
.. code-block:: python
urlpatterns = [
...
url(r'^charts/', include('charts.urls', namespace='charts')),
...
]
By default the app's templates extend a base template webpage/base.html
. To ovveride this, just define a CHARTS_BASE_TEMPLATE
variable on your project's settings.py
like e.g:
.. code-block:: python
CHARTS_BASE_TEMPLATE = 'base.html'
To link to the application's 'chart-selector-view' you can add something like the snippet below to your e.g. base-template:
.. code-block:: html
<a href="{% url 'charts:chart_selector' %}">Charts</a>
Configuration
To visualize any property of your model you have to pass in the models name (lowercase), the field-path (using django's lookup syntax __
to follow foreign key and many2many relations) and the chart type (bar|line|pie) via keyword arguments to the charts.views.DynChartView()
. In case those params are valid (i.d. the model and the lookup path acutally exist) the according chart should be drawn. But be aware that this only works if your project's DEBUG
settings are set to True
.
As recomended alternative you should create ChartConfig
objects for each property/model you'd like to explore via django admin-backend.
management commands
The package ships with a management command to
- create/delete chartconfig objects (Bar, Pie, Linecharts)
.. code-block:: console
python manage.py create_charttypes
.. code-block:: console
python manage.py delete_charttypes
- create/delete ChartConfig objects per application
.. code-block:: console
python manage.py create_charts <app_name>
.. code-block:: console
python manage.py delete_charts <app_name>
Build and publish
.. code-block:: console
python setup.py sdist bdist_wheel
twine upload dist/*
Features
- Visualizes aggregated values of your models as charts (pie/bar/line) using https://www.highcharts.com/
- Charts can be configured via admin backend (see Configuration Section)
Running Tests
Does the code actually work?
::
source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ tox
Credits
Tools used in rendering this package:
- Cookiecutter_
cookiecutter-djangopackage
_
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _cookiecutter-djangopackage
: https://github.com/pydanny/cookiecutter-djangopackage
History
0.5.4 (2019-10-11)
++++++++++++++++++
- values always returned as strings -> BooleanFields are displayed now
0.5.3 (2019-02-12)
++++++++++++++++++
- reworte code to fetch payload data to avoid mysterious duplicated values
0.5.2 (2018-12-18)
++++++++++++++++++
- improved admin interface for ChartConfig
0.5.1 (2018-12-05)
++++++++++++++++++
- added management commands to create ChartType and ChartConfig objects.
0.5.0 (2018-10-25)
++++++++++++++++++
- added
app_name
param to ChartConfig to avoid ambiguity in case models in different apps do have the same name.
0.4.1 (2018-07-12)
++++++++++++++++++
- minor change in dropdown template tag
0.4.0 (2018-07-10)
++++++++++++++++++
- refactoring of templates by introducing template tags
0.3.0 (2018-06-13)
++++++++++++++++++
- removed work in progress banner
0.3.0 (2018-06-05)
++++++++++++++++++
- In case of DEBUG=False only fieldpaths/models can be explored which are registerd in dedicated ChartConfig objects.
0.2.0 (2018-06-01)
++++++++++++++++++
- Base templates can now be configured in settings-param
0.1.0 (2018-06-01)
++++++++++++++++++