mirror of https://github.com/Kozea/pygal.git
Florian Mounier
13 years ago
9 changed files with 206 additions and 1 deletions
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env python |
||||
|
||||
from moulinrouge import create_app |
||||
|
||||
app = create_app() |
||||
|
||||
if __name__ == "__main__": |
||||
app.run(debug=True, threaded=True, host='0.0.0.0', port=21112) |
@ -0,0 +1,120 @@
|
||||
# -*- coding: utf-8 -*- |
||||
from flask import Flask, Response, render_template, url_for |
||||
from log_colorizer import make_colored_stream_handler |
||||
from logging import getLogger, INFO, WARN, DEBUG |
||||
from moulinrouge.data import labels, series |
||||
# from pygal.bar import VerticalBar, HorizontalBar |
||||
from pygal.line import Line |
||||
from pygal.bar import Bar |
||||
from pygal.config import Config |
||||
from pygal.style import styles |
||||
# from pygal.pie import Pie |
||||
import string |
||||
import random |
||||
|
||||
|
||||
def random_label(): |
||||
chars = string.letters + string.digits + u' àéèçêâäëï' |
||||
return ''.join( |
||||
[random.choice(chars) |
||||
for i in range( |
||||
random.randrange(4, 30))]) |
||||
|
||||
|
||||
def random_value(): |
||||
return random.randrange(0, 15, 1) |
||||
|
||||
|
||||
# def generate_vbar(**opts): |
||||
# g = VerticalBar(labels, opts) |
||||
# for serie, values in series.items(): |
||||
# g.add_data({'data': values, 'title': serie}) |
||||
|
||||
# return Response(g.burn(), mimetype='image/svg+xml') |
||||
|
||||
|
||||
def create_app(): |
||||
"""Creates the pygal test web app""" |
||||
|
||||
app = Flask(__name__) |
||||
handler = make_colored_stream_handler() |
||||
getLogger('werkzeug').addHandler(handler) |
||||
getLogger('werkzeug').setLevel(INFO) |
||||
getLogger('pygal').addHandler(handler) |
||||
getLogger('pygal').setLevel(DEBUG) |
||||
|
||||
@app.route("/") |
||||
def index(): |
||||
return render_template('index.jinja2') |
||||
|
||||
@app.route("/all-<type>-<style>.svg") |
||||
def all_svg(type, style): |
||||
data = random.randrange(1, 10) |
||||
config = Config() |
||||
config.width = 600 |
||||
config.height = 400 |
||||
config.style = styles[style] |
||||
config.x_labels = [random_label() for i in range(data)] |
||||
if type == 'bar': |
||||
g = Bar(config) |
||||
# elif type == 'hbar': |
||||
# g = HorizontalBar(labels) |
||||
# elif type == 'pie': |
||||
# series = 1 |
||||
# g = Pie({'fields': labels}) |
||||
elif type == 'line': |
||||
g = Line(config) |
||||
else: |
||||
return |
||||
|
||||
for i in range(random.randrange(1, 10)): |
||||
values = [random_value() for i in range(data)] |
||||
g.add(random_label(), values) |
||||
|
||||
return Response(g.render(), mimetype='image/svg+xml') |
||||
|
||||
@app.route("/all") |
||||
def all(): |
||||
width, height = 600, 400 |
||||
svgs = [url_for('all_svg', type=type, style=style) |
||||
for style in styles |
||||
for type in ('bar', 'line')] |
||||
return render_template('svgs.jinja2', |
||||
svgs=svgs, |
||||
width=width, |
||||
height=height) |
||||
|
||||
# @app.route("/rotation[<int:angle>].svg") |
||||
# def rotation_svg(angle): |
||||
# return generate_vbar( |
||||
# show_graph_title=True, |
||||
# graph_title="Rotation %d" % angle, |
||||
# x_label_rotation=angle) |
||||
|
||||
@app.route("/rotation") |
||||
def rotation(): |
||||
width, height = 375, 245 |
||||
svgs = [url_for('rotation_svg', angle=angle) |
||||
for angle in range(0, 91, 5)] |
||||
return render_template('svgs.jinja2', |
||||
svgs=svgs, |
||||
width=width, |
||||
height=height) |
||||
|
||||
@app.route("/bigline.svg") |
||||
def big_line_svg(): |
||||
g = Line(600, 400) |
||||
g.x_labels = ['a', 'b', 'c', 'd'] |
||||
g.add('serie', [11, 50, 133, 2]) |
||||
return Response(g.render(), mimetype='image/svg+xml') |
||||
|
||||
@app.route("/bigline") |
||||
def big_line(): |
||||
width, height = 900, 800 |
||||
svgs = [url_for('big_line_svg')] |
||||
return render_template('svgs.jinja2', |
||||
svgs=svgs, |
||||
width=width, |
||||
height=height) |
||||
|
||||
return app |
@ -0,0 +1,11 @@
|
||||
# -*- coding: utf-8 -*- |
||||
|
||||
labels = ['AURSAUTRAUIA', |
||||
'dpvluiqhu enuie', |
||||
'su sru a nanan a', |
||||
'09_28_3023_98120398', |
||||
u'éàé瀮ð{æə|&'] |
||||
series = { |
||||
'Female': [4, 2, 3, 0, 2], |
||||
'Male': [5, 1, 1, 3, 2] |
||||
} |
@ -0,0 +1,9 @@
|
||||
html, body, section, figure { |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
figure { |
||||
float: left; |
||||
border: 1px solid #ccc; |
||||
} |
@ -0,0 +1,24 @@
|
||||
$(function () { |
||||
$('figure figcaption').append( |
||||
$('<button>') |
||||
.text('⟳') |
||||
.click(function() { |
||||
var $fig, $embed, w, h, src; |
||||
$fig = $(this).closest('figure'); |
||||
$embed = $fig.find('embed'); |
||||
w = $embed.width(); |
||||
h = $embed.height(); |
||||
src = $embed.attr('src'); |
||||
$embed.remove(); |
||||
$fig.prepend( |
||||
$('<embed>') |
||||
.attr({ |
||||
src: src, |
||||
type: 'image/svg+xml', |
||||
width: w, |
||||
height: h |
||||
}) |
||||
); |
||||
}) |
||||
); |
||||
}); |
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html> |
||||
<html> |
||||
<head> |
||||
<title>Moulin rouge - pygal test platform</title> |
||||
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script> |
||||
<script type="text/javascript" src="{{ url_for('static', filename='js.js') }}"></script> |
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css.css') }}" type="text/css" /> |
||||
</head> |
||||
<body> |
||||
<section> |
||||
{% block section %} |
||||
{% endblock section %} |
||||
</section> |
||||
</body> |
||||
</html> |
@ -0,0 +1,7 @@
|
||||
{% extends '_layout.jinja2' %} |
||||
|
||||
{% block section %} |
||||
<a href="{{ url_for('all') }}">All types</a> |
||||
<a href="{{ url_for('rotation') }}">Rotations test</a> |
||||
<a href="{{ url_for('big_line') }}">Big line</a> |
||||
{% endblock section %} |
@ -0,0 +1,10 @@
|
||||
{% extends '_layout.jinja2' %} |
||||
|
||||
{% block section %} |
||||
{% for svg in svgs %} |
||||
<figure> |
||||
<embed src="{{ svg }}" type="image/svg+xml" width="{{ width }}" height="{{ height }}" /> |
||||
<figcaption></figcaption> |
||||
</figure> |
||||
{% endfor %} |
||||
{% endblock section %} |
Loading…
Reference in new issue