1 from django
import template
2 from django
.utils
.safestring
import mark_safe
3 from django
.utils
.html
import format_html
4 from django
.contrib
.staticfiles
.storage
import staticfiles_storage
6 from mygpo
.utils
import format_time
7 from mygpo
.publisher
.utils
import colour_repr
10 register
= template
.Library()
13 def vertical_bar(value
, max_value
, display
=None):
17 if display
== 'ratio':
18 value_str
= '%d/%d' % (value
, max_value
)
20 value_str
= str(value
)
22 # handle value == None
26 ratio
= min(float(value
) / float(max_value
), 1) * 100
31 left
= format_html('<span>{}</span>', value_str
)
34 left
= format_html(' ')
35 right
= format_html('<span>{}</span>', value_str
)
37 return format_html('<div class="barbg"><div class="bar" '
38 'style="width: {:.2d}%">{}</div>{}</div>',
44 s
= '<script type="text/javascript" src="//www.google.com/jsapi"></script>\n'
45 s
+= '<script type="text/javascript">\n'
46 s
+= 'google.load("visualization", "1", {"packages":["annotatedtimeline"]});\n'
47 s
+= 'google.setOnLoadCallback(drawChart);\n'
48 s
+= 'function drawChart() {\n'
49 s
+= 'var data = new google.visualization.DataTable();\n'
50 s
+= 'data.addColumn("date", "Date");\n'
51 s
+= 'data.addColumn("number", "Listeners");\n'
52 s
+= 'data.addColumn("string", "title1");\n'
53 s
+= 'data.addColumn("string", "text1");\n'
54 s
+= 'data.addRows([\n'
58 episode
= '"%s"' % r
.episode
.display_title
59 episode_
= '"released"'
62 episode_
= 'undefined'
64 s
+= '[new Date(%d, %d, %d), %d, %s, %s],\n' % (r
.date
.year
, r
.date
.month
-1, r
.date
.day
, r
.playcount
, episode
, episode_
)
67 s
+= 'var chart = new google.visualization.AnnotatedTimeLine(document.getElementById("chart_div"));\n'
68 s
+= 'chart.draw(data, {displayAnnotations: true});\n'
80 'chl=%s' % '|'.join(parts
.keys()),
81 'chd=t:%s' % ','.join([ repr(x
) for x
in parts
.values() ])
84 s
= '<img src="http://chart.apis.google.com/chart?%s"' % '&'.join(parts
)
90 def subscriber_change(change
):
94 return '+{0:.1%}'.format(change
)
96 # we don't care about negative changes