dataviz: factorize querystring building code (#62533)

This commit is contained in:
Valentin Deniaud 2022-06-02 14:37:50 +02:00
parent 79f061c471
commit 7f7d75c509
3 changed files with 18 additions and 34 deletions

View File

@ -276,6 +276,9 @@ class ChartNgCell(CellBase):
class Meta:
verbose_name = _('Chart')
class Media:
js = ('js/chartngcell.js',)
@classmethod
def is_enabled(cls):
return settings.KNOWN_SERVICES.get('bijoe') or settings.STATISTICS_PROVIDERS

View File

@ -0,0 +1,12 @@
function get_graph_querystring(extra_context, width=undefined) {
qs = [];
if ($('#chart-filters'))
qs.push($('#chart-filters').serialize());
if (extra_context)
qs.push('ctx=' + extra_context);
if (window.location.search)
qs.push(window.location.search.slice(1));
if (width)
qs.push('width=' + width);
return '?' + qs.join('&');
};

View File

@ -5,17 +5,9 @@
<script>
$(function() {
var extra_context = $('#chart-{{cell.id}}').parents('.cell').data('extra-context');
var chart_filters_form = $('#chart-filters');
$(window).on('combo:refresh-graphs', function() {
qs = [];
if(chart_filters_form)
qs.push(chart_filters_form.serialize());
if(extra_context)
qs.push('ctx=' + extra_context);
if (window.location.search)
qs.push(window.location.search.slice(1));
$.ajax({
url : "{% url 'combo-dataviz-graph' cell=cell.id %}?" + qs.join('&'),
url : "{% url 'combo-dataviz-graph' cell=cell.id %}" + get_graph_querystring(extra_context),
type: 'GET',
success: function(data) {
$('#chart-{{cell.id}}').html(data);
@ -32,40 +24,17 @@ $(function() {
$(function() {
var last_width = 1;
var extra_context = $('#chart-{{cell.id}}').parents('.cell').data('extra-context');
var chart_filters_form = $('#chart-filters');
$(window).on('load resize gadjo:sidepage-toggled combo:resize-graphs', function() {
var chart_cell = $('#chart-{{cell.id}}').parent();
var new_width = Math.floor($(chart_cell).width());
var ratio = new_width / last_width;
var qs;
if (window.location.search) {
qs = window.location.search + '&';
} else {
qs = '?';
}
qs += 'width=' + new_width
if(chart_filters_form)
qs += '&' + chart_filters_form.serialize()
if(extra_context)
qs += '&ctx=' + extra_context
if (ratio > 1.2 || ratio < 0.8) {
$('#chart-{{cell.id}}').attr('src', "{% url 'combo-dataviz-graph' cell=cell.id %}" + qs);
$('#chart-{{cell.id}}').attr('src', "{% url 'combo-dataviz-graph' cell=cell.id %}" + get_graph_querystring(extra_context, new_width));
last_width = new_width;
}
}).trigger('combo:resize-graphs');
$(window).on('combo:refresh-graphs', function() {
var qs;
if (window.location.search) {
qs = window.location.search + '&';
} else {
qs = '?';
}
qs += 'width=' + last_width
if(chart_filters_form)
qs += '&' + chart_filters_form.serialize()
if(extra_context)
qs += '&ctx=' + extra_context
$('#chart-{{cell.id}}').attr('src', "{% url 'combo-dataviz-graph' cell=cell.id %}" + qs);
$('#chart-{{cell.id}}').attr('src', "{% url 'combo-dataviz-graph' cell=cell.id %}" + get_graph_querystring(extra_context, last_width));
});
});
</script>