dataviz, avoir un widget dynamique pour la sélection multiple (#74061) #41

Merged
vdeniaud merged 2 commits from wip/74061-dataviz-avoir-un-widget-dynamiqu into main 2023-02-28 10:20:19 +01:00
Owner

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.

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.
vdeniaud reviewed 2023-02-07 11:43:28 +01:00
@ -0,0 +27,4 @@
function remove_row(event) {
event.preventDefault();
var rows = $(this).parent().remove();
$(window).trigger('combo:multiselectwidget-remove');
Author
Owner

C'est nécessaire pour le rafraîchissement auto de la cellule, le fonctionnement étant :

  • Clic sur « + », une ligne apparaît mais le rafraîchissement n'est pas déclenché
  • Sélection de la valeur souhaitée, le rafraîchissement est déclenché
  • Clic sur « − », le rafraîchissement n'est pas déclenché
  • Mais si il faut rafraîchir, du coup on trigger cet évènement et on s'assure que ça provoque un rafra
C'est nécessaire pour le rafraîchissement auto de la cellule, le fonctionnement étant : * Clic sur « + », une ligne apparaît mais le rafraîchissement n'est pas déclenché * Sélection de la valeur souhaitée, le rafraîchissement est déclenché * Clic sur « − », le rafraîchissement n'est pas déclenché * Mais si il faut rafraîchir, du coup on trigger cet évènement et on s'assure que ça provoque un rafra
Owner

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

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
vdeniaud marked this conversation as resolved
vdeniaud reviewed 2023-02-07 11:44:54 +01:00
@ -0,0 +30,4 @@
$(window).trigger('combo:multiselectwidget-remove');
}
$('[name$=add_element]').unbind('click');
Author
Owner

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).

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).
Owner

unbind eet déprécié, utiliser off à la place. cf commit de proposition

unbind eet déprécié, utiliser `off` à la place. cf commit de proposition
vdeniaud marked this conversation as resolved
vdeniaud reviewed 2023-02-07 11:46:35 +01:00
@ -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() {
Author
Owner

Petit changement de cible de ce sélecteur, sinon les <select> ajoutés dynamiquement ne déclenchaient pas le rafraîchissement de la cellule.

Petit changement de cible de ce sélecteur, sinon les `<select>` ajoutés dynamiquement ne déclenchaient pas le rafraîchissement de la cellule.
vdeniaud marked this conversation as resolved
Owner

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.

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.
tjund changed title from dataviz, avoir un widget dynamique pour la sélection multiple (#74061) to WIP: dataviz, avoir un widget dynamique pour la sélection multiple (#74061) 2023-02-08 17:03:13 +01:00
tjund requested review from tjund 2023-02-08 17:03:26 +01:00
Author
Owner

J'ai poussé 3 commits de proposition pour illustrer mes commentaires.

Top, merci !

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.

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)

> J'ai poussé 3 commits de proposition pour illustrer mes commentaires. Top, merci ! > 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. 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)
vdeniaud force-pushed wip/74061-dataviz-avoir-un-widget-dynamiqu from 9f4af3aeae to d266006070 2023-02-14 17:39:00 +01:00 Compare
vdeniaud changed title from WIP: dataviz, avoir un widget dynamique pour la sélection multiple (#74061) to dataviz, avoir un widget dynamique pour la sélection multiple (#74061) 2023-02-14 17:40:22 +01:00
vdeniaud force-pushed wip/74061-dataviz-avoir-un-widget-dynamiqu from d266006070 to d47dd545b1 2023-02-22 18:00:49 +01:00 Compare
fpeters approved these changes 2023-02-28 07:13:04 +01:00
fpeters left a comment
Owner

Pour moi c'est ok. (mais pour le js tu peux bien sûr attendre le retour de js)

Pour moi c'est ok. (mais pour le js tu peux bien sûr attendre le retour de js)
vdeniaud force-pushed wip/74061-dataviz-avoir-un-widget-dynamiqu from d47dd545b1 to 337259dc5a 2023-02-28 10:00:13 +01:00 Compare
vdeniaud removed review request for tjund 2023-02-28 10:00:38 +01:00
Author
Owner

mais pour le js tu peux bien sûr attendre le retour de js

C'est js ThomasJ qui a écrit le js au final :)

> mais pour le js tu peux bien sûr attendre le retour de js C'est ~~js~~ ThomasJ qui a écrit le js au final :)
vdeniaud merged commit 337259dc5a into main 2023-02-28 10:20:19 +01:00
vdeniaud deleted branch wip/74061-dataviz-avoir-un-widget-dynamiqu 2023-02-28 10:20:19 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/combo#41
No description provided.