backoffice: move graphs production code into its own function (#6879)
This commit is contained in:
parent
480006d3ff
commit
b0da15947a
|
@ -105,6 +105,94 @@ def get_stats_criteria(request, parsed_values=None):
|
|||
return criterias
|
||||
|
||||
|
||||
def do_graphs_section(period_start, period_end):
|
||||
from wcs import sql
|
||||
r = TemplateIO(html=True)
|
||||
monthly_totals = sql.get_monthly_totals(period_start, period_end)[-12:]
|
||||
yearly_totals = sql.get_yearly_totals(period_start, period_end)[-10:]
|
||||
|
||||
weekday_totals = sql.get_weekday_totals(period_start, period_end)
|
||||
weekday_line = []
|
||||
weekday_names = [_('Sunday'), _('Monday'), _('Tuesday'),
|
||||
_('Wednesday'), _('Thursday'), _('Friday'), _('Saturday')]
|
||||
for weekday, total in weekday_totals:
|
||||
label = weekday_names[weekday]
|
||||
weekday_line.append((label, total))
|
||||
# move Sunday to the last place
|
||||
weekday_line = weekday_line[1:] + [weekday_line[0]]
|
||||
|
||||
hour_totals = sql.get_hour_totals(period_start, period_end)
|
||||
|
||||
if len(yearly_totals) > 1:
|
||||
r += htmltext('<h3>%s</h3>') % _('Submissions by year')
|
||||
r += htmltext('<div id="chart_years" style="height:160px; width:100%;"></div>')
|
||||
|
||||
r += htmltext('<h3>%s</h3>') % _('Submissions by month')
|
||||
r += htmltext('<div id="chart_months" style="height:160px; width:100%;"></div>')
|
||||
r += htmltext('<h3>%s</h3>') % _('Submissions by weekday')
|
||||
r += htmltext('<div id="chart_weekdays" style="height:160px; width:100%;"></div>')
|
||||
r += htmltext('<h3>%s</h3>') % _('Submissions by hour')
|
||||
r += htmltext('<div id="chart_hours" style="height:160px; width:100%;"></div>')
|
||||
|
||||
get_response().add_javascript(['jquery.js', 'jqplot/jquery.jqplot.min.js',
|
||||
'jqplot/plugins/jqplot.canvasTextRenderer.min.js',
|
||||
'jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js',
|
||||
'jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js',
|
||||
'jqplot/plugins/jqplot.categoryAxisRenderer.min.js',
|
||||
'jqplot/plugins/jqplot.barRenderer.min.js',
|
||||
])
|
||||
|
||||
get_response().add_javascript_code('''
|
||||
$(document).ready(function(){
|
||||
var weekday_line = %(weekday_line)s;
|
||||
var hour_line = %(hour_line)s;
|
||||
var month_line = %(month_line)s;
|
||||
var year_line = %(year_line)s;
|
||||
|
||||
$.jqplot ('chart_weekdays', [weekday_line], {
|
||||
series:[{renderer:$.jqplot.BarRenderer}],
|
||||
axesDefaults: {
|
||||
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
|
||||
tickOptions: { angle: -30, }
|
||||
},
|
||||
axes: { xaxis: { renderer: $.jqplot.CategoryAxisRenderer } }
|
||||
});
|
||||
|
||||
$.jqplot ('chart_hours', [hour_line], {
|
||||
axesDefaults: {
|
||||
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
|
||||
tickOptions: { angle: -30, }
|
||||
},
|
||||
axes: { xaxis: { renderer: $.jqplot.CategoryAxisRenderer }, yaxis: {min: 0} }
|
||||
});
|
||||
|
||||
$.jqplot ('chart_months', [month_line], {
|
||||
axesDefaults: {
|
||||
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
|
||||
tickOptions: { angle: -30, }
|
||||
},
|
||||
axes: { xaxis: { renderer: $.jqplot.CategoryAxisRenderer }, yaxis: {min: 0} }
|
||||
});
|
||||
|
||||
$.jqplot ('chart_years', [year_line], {
|
||||
series:[{renderer:$.jqplot.BarRenderer}],
|
||||
axesDefaults: {
|
||||
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
|
||||
tickOptions: { angle: -30, }
|
||||
},
|
||||
axes: { xaxis: { renderer: $.jqplot.CategoryAxisRenderer }, yaxis: {min: 0} }
|
||||
});
|
||||
|
||||
});
|
||||
''' % {
|
||||
'weekday_line': json.dumps(weekday_line),
|
||||
'hour_line': json.dumps(hour_totals),
|
||||
'month_line': json.dumps(monthly_totals),
|
||||
'year_line': json.dumps(yearly_totals),
|
||||
})
|
||||
return r.getvalue()
|
||||
|
||||
|
||||
class FormDefPage(wcs.admin.forms.FormDefPage):
|
||||
def html_top(self, title):
|
||||
return html_top('forms', title)
|
||||
|
@ -319,94 +407,9 @@ class RootDirectory(BackofficeRootDirectory):
|
|||
if do_graphs:
|
||||
r += htmltext('</div>')
|
||||
r += htmltext('<div class="splitcontent-right">')
|
||||
from wcs import sql
|
||||
|
||||
period_start = parsed_values.get('period_start')
|
||||
period_end = parsed_values.get('period_end')
|
||||
|
||||
monthly_totals = sql.get_monthly_totals(period_start, period_end)[-12:]
|
||||
yearly_totals = sql.get_yearly_totals(period_start, period_end)[-10:]
|
||||
|
||||
weekday_totals = sql.get_weekday_totals(period_start, period_end)
|
||||
weekday_line = []
|
||||
weekday_names = [_('Sunday'), _('Monday'), _('Tuesday'),
|
||||
_('Wednesday'), _('Thursday'), _('Friday'), _('Saturday')]
|
||||
for weekday, total in weekday_totals:
|
||||
label = weekday_names[weekday]
|
||||
weekday_line.append((label, total))
|
||||
# move Sunday to the last place
|
||||
weekday_line = weekday_line[1:] + [weekday_line[0]]
|
||||
|
||||
hour_totals = sql.get_hour_totals(period_start, period_end)
|
||||
|
||||
if len(yearly_totals) > 1:
|
||||
r += htmltext('<h3>%s</h3>') % _('Submissions by year')
|
||||
r += htmltext('<div id="chart_years" style="height:160px; width:100%;"></div>')
|
||||
|
||||
r += htmltext('<h3>%s</h3>') % _('Submissions by month')
|
||||
r += htmltext('<div id="chart_months" style="height:160px; width:100%;"></div>')
|
||||
r += htmltext('<h3>%s</h3>') % _('Submissions by weekday')
|
||||
r += htmltext('<div id="chart_weekdays" style="height:160px; width:100%;"></div>')
|
||||
r += htmltext('<h3>%s</h3>') % _('Submissions by hour')
|
||||
r += htmltext('<div id="chart_hours" style="height:160px; width:100%;"></div>')
|
||||
|
||||
get_response().add_javascript(['jquery.js', 'jqplot/jquery.jqplot.min.js',
|
||||
'jqplot/plugins/jqplot.canvasTextRenderer.min.js',
|
||||
'jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js',
|
||||
'jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js',
|
||||
'jqplot/plugins/jqplot.categoryAxisRenderer.min.js',
|
||||
'jqplot/plugins/jqplot.barRenderer.min.js',
|
||||
])
|
||||
|
||||
get_response().add_javascript_code('''
|
||||
$(document).ready(function(){
|
||||
var weekday_line = %(weekday_line)s;
|
||||
var hour_line = %(hour_line)s;
|
||||
var month_line = %(month_line)s;
|
||||
var year_line = %(year_line)s;
|
||||
|
||||
$.jqplot ('chart_weekdays', [weekday_line], {
|
||||
series:[{renderer:$.jqplot.BarRenderer}],
|
||||
axesDefaults: {
|
||||
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
|
||||
tickOptions: { angle: -30, }
|
||||
},
|
||||
axes: { xaxis: { renderer: $.jqplot.CategoryAxisRenderer } }
|
||||
});
|
||||
|
||||
$.jqplot ('chart_hours', [hour_line], {
|
||||
axesDefaults: {
|
||||
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
|
||||
tickOptions: { angle: -30, }
|
||||
},
|
||||
axes: { xaxis: { renderer: $.jqplot.CategoryAxisRenderer }, yaxis: {min: 0} }
|
||||
});
|
||||
|
||||
$.jqplot ('chart_months', [month_line], {
|
||||
axesDefaults: {
|
||||
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
|
||||
tickOptions: { angle: -30, }
|
||||
},
|
||||
axes: { xaxis: { renderer: $.jqplot.CategoryAxisRenderer }, yaxis: {min: 0} }
|
||||
});
|
||||
|
||||
$.jqplot ('chart_years', [year_line], {
|
||||
series:[{renderer:$.jqplot.BarRenderer}],
|
||||
axesDefaults: {
|
||||
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
|
||||
tickOptions: { angle: -30, }
|
||||
},
|
||||
axes: { xaxis: { renderer: $.jqplot.CategoryAxisRenderer }, yaxis: {min: 0} }
|
||||
});
|
||||
|
||||
});
|
||||
''' % {
|
||||
'weekday_line': json.dumps(weekday_line),
|
||||
'hour_line': json.dumps(hour_totals),
|
||||
'month_line': json.dumps(monthly_totals),
|
||||
'year_line': json.dumps(yearly_totals),
|
||||
})
|
||||
|
||||
r += do_graphs_section(period_start, period_end)
|
||||
r += htmltext('</div>')
|
||||
|
||||
return r.getvalue()
|
||||
|
|
Loading…
Reference in New Issue