Projet

Général

Profil

Bug #17161

message "les résultats ne peuvent pas être chargés" pendant le chargement d'une grosse source select2 ... alors que c'est pas vrai.

Ajouté par Thomas Noël il y a presque 7 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
23 juin 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Sur une source en select2 vers une grosse source CSV de 3Mo (qui met donc du temps répondre) : quand on tapes quelques lettres ça affiche "les résultats ne peuvent pas être chargés"

... mais puis 2 secondes après ils apparaissent.


Fichiers

Révisions associées

Révision 03f23bc5 (diff)
Ajouté par Frédéric Péters il y a presque 7 ans

select2: fix handling of aborted queries (#17161)

Révision 01768bf2 (diff)
Ajouté par Thomas Noël il y a presque 7 ans

select2: set a 250ms delay for debouncing requests (#17161)

Historique

#2

Mis à jour par Thomas Noël il y a presque 7 ans

Mon impression : c'est quand on tape les lettres vite, entre deux ça "coupe" la requête en cours, et donc, erreur. Un truc comme ça.

#3

Mis à jour par Thomas Noël il y a presque 7 ans

Ici j'ai tapé "par" vite : requête lors du "p", remplacée par une autre quand j'ai tapée le "a", remplacée par une dernière quand j'ai tape le "r"

Le message "les résultats ne peuvent pas être chargés" s'affiche dès que je tape le "a"

#4

Mis à jour par Frédéric Péters il y a presque 7 ans

Pour moi c'est la détection de l'annulation des requêtes qui foire, ça marche avec :

        // Attempt to detect if a request was aborted
        // Only works if the transport exposes a status property
-        if ($request.status && $request.status === '0') {
+        if ($request.status === 0) {
          return;
        }     
#5

Mis à jour par Thomas Noël il y a presque 7 ans

Et dans un élan de générosité pour éviter de trop taper passerelle, j'ajouterais bien un delay:250 dans la construction du widget select2 (https://select2.github.io/options.html#a-request-is-being-triggered-on-every-key-stroke-can-i-delay-th:

--- a/wcs/qommon/form.py
+++ b/wcs/qommon/form.py
@@ -1832,6 +1832,7 @@ var wcs_select2_%(id)s = $("#form_%(id)s").select2({

         # setting up the select2 widget continues here
         r += htmltext(""" 
+        delay: 250,
         dataType: 'json',
         data: function (params) {
             return {

#7

Mis à jour par Frédéric Péters il y a presque 7 ans

Joie du js; pour être sûr j'ai modifié pour faire (=== 0 || === '0'). Mais surtout, select2.min.js…

-{d.status&&"0"===d.status||e.trigger("results:message",...
+{(0===d.status||"0"===d.status)||e.trigger("results:message",...

Ok pour les 250ms.

#8

Mis à jour par Thomas Noël il y a presque 7 ans

  • Statut changé de En cours à Résolu (à déployer)

Ack et push des deux

commit 01768bf2ba7fed44ec6797d5fe778536a5f2faf7
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Fri Jun 23 17:47:21 2017 +0200

    select2: set a 250ms delay for debouncing requests (#17161)

commit 03f23bc5b82e4f45876a603539b5b32e44365312
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Mon Jun 26 10:50:18 2017 +0200

    select2: fix handling of aborted queries (#17161)

#9

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF