IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

Boite de dialogue qui n'attend pas


Sujet :

Ext JS / Sencha

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 254
    Points : 138
    Points
    138
    Par défaut Boite de dialogue qui n'attend pas
    Bonjour,

    Je programme un serveur avec ExtJS 6 et PHP 7.
    J'ai une page HTML avec un script ExtJS et un formPanel qui demande de choisir des options.
    Sur l'une de ces options, je crée un fenêtre qui demande quelques renseignements complémentaire (comme il s'agit d'un reçu : nom de la personne et somme). Puis le script PHP est sensé prendre en compte ces renseignements pour générer un PDF.
    La fenêtre de demande de renseignements s'affiche, mais n'attend pas la réponse de l'utilisateur, et j'arrive sur une fenêtre de dialogue me demandant où enregistrer mon PDF. Cette boite de dialogue recouvre ma fenêtre de renseignements.
    Si j'enregistre le reçu, je peux constater qu'il a été généré, mais sans le nom de la personne ni le montant. et ma fenêtre de demande de renseignements reste affichée.
    Voici le code où je déclenche l'apparition de la fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    case 2:
      GetVoucherData(); // appel de la fonction de demande de renseignements
      redirect = './CorpsRecu.php'
          + '?PentaID='
          + cbValue
          + '&signature='
          + GetRadioButtonSignaturesValue()
          + '&attestation=' + att;
      break;
    } // fin du switch
    window.location = redirect;
    Et voici (en exclusivité mondiale sur ce forum!), le code de la fonction qui est sensée générer la fenêtre de demande de renseignements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    function GetVoucherData() {
      var formPanel =  {
          xtype       : 'form',
          height      : 125,
          autoScroll  : true,
          id          : 'formpanel',
          defaultType : 'field',
          frame       : true,
          title       : 'form panel',
          items       : [
              {
                  fieldLabel : 'Name'
              },
              {
                  fieldLabel : 'montant'
              }
          ],
          buttons :   [
                          {
                          text : 'Valider',
                          handler : function() {
                            alert('Validation');
                          }
                          }
                      ]               
      };
      var myWin = new Ext.Window({
                              id     : 'myWin',
                              height : 400,
                              width  : 400,
                              modal  : true,
                              items  : [formPanel]
                          });
      myWin.show(); // Pourquoi ça n'attend pas ici ????
    }
    J'ai essayé différentes solutions, après recherche auprès de MM Google, Bing, DuckDuckGo et quelques autres, mais rien ne fonctionne pour l'instant.

    Si quelqu'un (quelqu'une) d'entre vous a quelques idées et souhaite m'en faire part, je graverais à jamais son nom (à défaut son pseudo) dans le marbre des octets.

    Kim

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Salut kimlee,

    je ne suis pas familier d’ExtJS mais, en parcourant la doc de la version 6, je n’ai pas trouvé Ext.Window. Se pourrait-il que ce soit une forme obsolète ?
    Ce qui s’en rapproche le plus parmi ce que j’ai trouvé c’est ça : Ext.window.Window

    D’autre part, est-tu bien sûr que ton appel à GetVoucherData est bloquant ? Autrement dit, est-ce qu’une fenêtre modale d’ExtJS est bloquante ? Si elle ne l’est pas, l’exécution de ton script continue et atteint quasi-immédiatement après l’instruction window.location = redirect;, ce qui expliquerait ton problème.

    Ça me paraît plus prudent de mettre le code de redirection dans la méthode handler du bouton de ta fenêtre.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 254
    Points : 138
    Points
    138
    Par défaut
    Merci Watilin,

    Ta remarque est pertinente. La fenêtre n'est pas bloquante. Il suffit en effet de mettre l'appel au script PHP dans la fonction de handler du bouton.

    Par contre, le Ext.Window fonctionne sans problème, même si, comme tu le soulignes, il s'agit vraisemblablement d'une forme obsolète.
    Il faut dire que j'ai commencé à développer ce serveur en ExtJS 4, et que les nouveaux modules se créent par copier/coller (Je sais, c'est pas bien, mais ce n'est pas dans un cadre professionnel)

    En tous cas encore merci, et comme précisé dans mon premier message, ton nom est désormais gravé à jamais dans le marbre des octets ....

    Kim

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 49
    Points : 85
    Points
    85
    Par défaut
    Sa n'attend pas car l'affichage des fenêtres en ExtJs (même modale) n'est pas bloquant. Il te faut jouer avec les événements (par exemple close) de la window pour exécuter du code après sa fermeture.
    Tu peut encapsuler tout cela dans une promesse pour avoir un code plus simple à lire (l'appel en tout cas).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boite de dialogue qui n'apparait pas
    Par tanaka59 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/10/2012, 15h57
  2. ListView dans une boite de dialogue qui ne se met pas à jour
    Par nicofromChina dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 26/03/2012, 11h16
  3. Boite de dialogue qui ne s'affiche pas
    Par Manankasina dans le forum Windows
    Réponses: 2
    Dernier message: 04/12/2008, 09h16
  4. Réponses: 2
    Dernier message: 23/12/2007, 20h09
  5. [MFC] Boite de dialogue qui se lance pas
    Par kacedda dans le forum MFC
    Réponses: 4
    Dernier message: 08/03/2006, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo