dataviz, avoir un widget dynamique pour la sélection multiple (#74061) #41
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/74061-dataviz-avoir-un-widget-dynamiqu"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Voilà j'ai un peu tout donné niveau JS/CSS, avec une aide initiale de @tjund salvatrice pour le HTML/style/accessibilité (et puis après je me suis aperçu qu'il fallait aussi un bouton « − » et j'ai eu plein d'autres problèmes).
Niveau Django j'invente le « MultiWidget avec N sous-widgets » ce qui m'a l'air d'être pas du tout prévu mais de se faire quand même assez bien.
@ -0,0 +27,4 @@
function remove_row(event) {
event.preventDefault();
var rows = $(this).parent().remove();
$(window).trigger('combo:multiselectwidget-remove');
C'est nécessaire pour le rafraîchissement auto de la cellule, le fonctionnement étant :
Utiliser un event pour cela t'oblige à ajouter des lignes des codes JS dans les templates où le widget est utilisé. On peut s'en passer, je pousse un commit de proposition
@ -0,0 +30,4 @@
$(window).trigger('combo:multiselectwidget-remove');
}
$('[name$=add_element]').unbind('click');
Si plusieurs cellules sont sur la même page, le JS se retrouve inclut et donc exécuté plusieurs fois. Ceci m'a l'air d'être la technique la plus simple pour assurer qu'on ait pas plusieurs handlers attachés aux boutons (sinon un clic va déclencher l'apparition d'autant de lignes qu'il y a de cellules, pas ouf).
unbind eet déprécié, utiliser
off
à la place. cf commit de proposition@ -31,3 +34,3 @@
}).change();
$('select, input', 'div#panel-dataviz_chartngcell-{{ cell.pk }}-general').change(function() {
$('div#panel-dataviz_chartngcell-{{ cell.pk }}-general div.content').change(function() {
Petit changement de cible de ce sélecteur, sinon les
<select>
ajoutés dynamiquement ne déclenchaient pas le rafraîchissement de la cellule.J'ai poussé 3 commits de proposition pour illustrer mes commentaires.
De manière plus large, je ne comprends pourquoi injecter le code JS et CSS au début du code du formulaire la cellule. Le script et la CSS va être joué au [re]chargement de chaque cellule avec ce widget. Redondant et compliqué tout ça.
dataviz, avoir un widget dynamique pour la sélection multiple (#74061)to WIP: dataviz, avoir un widget dynamique pour la sélection multiple (#74061)Top, merci !
En effet, j'ai moyen de faire apparaître les balises plus haut dans le HTML, pour que ce ne soit chargé qu'une fois.
Par contre on ne peut plus utiliser le fait que le JS soit à nouveau chargé pour attacher les handlers aux boutons après rechargement, qu'est-ce que tu préconises pour remédier à ça ? (côté cellule filtre on pourrait faire tourner le JS après un évènement combo:cell-loaded, mais pas côté BO)
9f4af3aeae
tod266006070
WIP: dataviz, avoir un widget dynamique pour la sélection multiple (#74061)to dataviz, avoir un widget dynamique pour la sélection multiple (#74061)d266006070
tod47dd545b1
Pour moi c'est ok. (mais pour le js tu peux bien sûr attendre le retour de js)
d47dd545b1
to337259dc5a
C'est
jsThomasJ qui a écrit le js au final :)