dataviz: automatically refresh cells on filter change (#72465) #21

Merged
vdeniaud merged 1 commits from wip/72465-dataviz-tenter-le-rafraichisseme into main 2023-01-16 09:37:23 +01:00
2 changed files with 16 additions and 3 deletions

View File

@ -23,11 +23,12 @@
<script>
$(function () {
const form = $('#chart-filters');
var loaded_cell_count = 0;
if (!$('body').data('filters-cell-id')) {
$('body').data('filters-cell-id', Math.random().toString(36).slice(2, 7));
var loaded_cell_count = 0;
function load_filters_cell_last() {
if (++loaded_cell_count == $('div.chartngcell').length) {
combo_load_cell($('.chart-filters-cell'));
@ -54,7 +55,8 @@
end_field.parent().hide();
}
}).change();
$('#chart-filters').submit(function(e) {
form.submit(function(e) {
e.preventDefault();
$(window).trigger('combo:refresh-graphs');
chart_cell = $(this).parents('.cell');
@ -62,6 +64,12 @@
new_url = ajax_cell_url + '?filters_cell_id=' + $('body').data('filters-cell-id') + '&' + $(this).serialize();
chart_cell.data('ajax-cell-url', new_url);
});
Outdated
Review

Pourquoi ne pas simplement ?

$('form#chart-filters').change(function()

Pourquoi ne pas simplement ? `$('form#chart-filters').change(function()`

Par mimétisme avec ce qui est fait côté BO, effectivement j'ai enlevé et ça fonctionne.

(côté BO ça crée une boucle infinie, pas 100% sûr à cause de quoi)

Par mimétisme avec ce qui est fait côté BO, effectivement j'ai enlevé et ça fonctionne. (côté BO ça crée une boucle infinie, pas 100% sûr à cause de quoi)
Outdated
Review

$('form#chart-filters') utilisé 3x.
Pour des questions de performance, ne pas parser 3x le dom. Parser 1x et stocker dans 1 `const form = $('#chart-filters');

`$('form#chart-filters')` utilisé 3x. Pour des questions de performance, ne pas parser 3x le dom. Parser 1x et stocker dans 1 `const form = $('#chart-filters');
Outdated
Review

(côté BO ça crée une boucle infinie, pas 100% sûr à cause de quoi)

Je n'arrive pas à reproduire, c'est du côté de combo sur la cellule graph ?

> (côté BO ça crée une boucle infinie, pas 100% sûr à cause de quoi) Je n'arrive pas à reproduire, c'est du côté de combo sur la cellule graph ?

Modif appliquée

Modif appliquée

C'est côté paramétrage de la cellule, sélectionner n'importe quelle donnée qui ne soit pas bijoe (genre « Démarches : Nombre de demandes »).

C'est côté paramétrage de la cellule, sélectionner n'importe quelle donnée qui ne soit pas bijoe (genre « Démarches : Nombre de demandes »).
form.change(function() {
Outdated
Review

Je pense que c'est mieux d'utiliser l'event submit sur le form plutôt que de simuler un click sur le bouton :

$('form#chart-filters').submit();

Je pense que c'est mieux d'utiliser l'event submit sur le form plutôt que de simuler un click sur le bouton : `$('form#chart-filters').submit();`
Outdated
Review

je pense qu'il est même possible de récupérer le form d'un champs sans faire intervenir de dom :

this.form.submit()

je pense qu'il est même possible de récupérer le form d'un champs sans faire intervenir de dom : `this.form.submit()`

Changé en faveur de submit(), par contre this.form.submit() (ou this.submit()) ne fonctionne pas, car ça soumet le formulaire alors qu'on ne veut pas vraiment (il y a un e.preventDefault() dans le handler).

Changé en faveur de submit(), par contre this.form.submit() (ou this.submit()) ne fonctionne pas, car ça soumet le formulaire alors qu'on ne veut pas vraiment (il y a un e.preventDefault() dans le handler).
if(loaded_cell_count == 0) {
form.submit();
}
});
});
</script>
{% endblock %}

View File

@ -29,5 +29,10 @@
end_field_template.parent().hide();
}
}).change();
$('select, input', 'div#panel-dataviz_chartngcell-{{ cell.pk }}-general').change(function() {
$('div#cell-dataviz_chartngcell-{{ cell.pk }} button.save').click();
});
});
</script>