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

Bibliothèques & Frameworks Discussion :

Réaliser une action à la suite d'un drop [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut Réaliser une action à la suite d'un drop
    Voici problème .
    Je voudrais réaliser une action à la suite d'un drop dans une source maSource. Voici ce à quoi je suis arrivé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    maSource.onDrop = function(){
    dojo.style(dojo.byId("text2"),{background: 'red'});
    };
    Le problème est que l'action est réalisée, mais le drop ne s'effectue pas. Autrement dit, l'objet ne se dépose pas dans maSource mais reste dans la source où il était au début.

    Une proposition de solution(de la part de Daniel Gibot): faire plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dojo.subscribe("/dnd/drop", function(source, nodes, copy, target){
    //target.parent.id donne l'id du bloc qui réceptionne
    //source.parent.id donne l'id de celui qui envoi
    //nodes contient la ligne qui est déplacée
    });
    Si je souhaite réaliser l'action suivante lorsqu'on drop qlq chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dojo.style(dojo.byId("text"),{background: 'red'});
    Je ne vois pas bien comment insérer le code dans ce que tu m'as donné, Daniel. Pourrais-tu écrire le code pour cet exemple?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    Quand j'insère l'instruction directement dans la fonction, l'action se réalise pour n'importe quel drop.
    Je n'arrive pas à préciser que le drop doit être pris en compte seulement quand il est fait dans maSource

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Si tu enleves ta fonction, est ce que le drop se fait ?
    Si ce n'est pas le cas, avant de trouver un moyen de modifier le style, il faudrait d'abord s'assurer que le drop fonctionne ^^

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    Quand j'enlève la fonction, le drop se fait.

    Quand je mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    maSource.onDrop = function(){
    dojo.style(dojo.byId("text2"),{background: 'green'});
    };
    L'action se réalise quand j'essaye de faire un drop sur maSource mais le drop ne s'effectue pas(au lâcher, l'objet réapparaît là où il était au départ).

    Quand je mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dojo.subscribe("/dnd/drop", function(source, nodes, copy, target){
    target = colonne2;
    dojo.style(dojo.byId("text2"),{background: 'green'});
    });
    Quelque que soit l'endroit où je drop un objet, l'action se réalise, l'objet aterrit au bon endroit, mais l'action se réalise même quand le drop est fait dans une autre source que maSource

    J'espère avoir été suffisamment clair...

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Ok.

    Donc de ce que je t'ai dit, "target.parent.id" affiche l'id du conteneur qui reçoit.
    Donc si tu fais un contrôle dans le "dojo.subscribe" en vérifiant si l'id est "maSource" tu devrais être en mesure de savoir quand c'est lui et donc modifier le fond.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    J'ai eu un petit bug qui m'a un peu retardé , pffff

    Donc tu proposes un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dojo.subscribe("/dnd/drop", function(source, nodes, copy, target){
    if(target.parent.id=="idSource"){
    dojo.style(dojo.byId("text2"),{background: 'green'});
    }
    });
    Ce qu'il y a là ne marche pas, et je ne vois pas trop comment faire autrement le "contrôle" dont tu parles.

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Tu viens de le faire le contrôle. C'est vérifier l'id avant d'appliquer le style.
    "maSource" c'est le conteneur où tu prends le noeud pour l'envoyer dans un autre (dans ces cas là c'est "source.parent.id") ? Ou c'est celui où le noeud arrive ("target.parent.id") ?
    Est ce qu'à l'évènement "drop" il passe dans la fonction du "dojo.subscribe" ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    maSource est le container d'arrivée.

    J'ai un peu modifié le code, en ajoutant un else pour que quelque chose se passe quel que soit l'endroit où on drop:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dojo.subscribe("/dnd/drop", function(source, nodes, copy, target){
    if(target.parent.id=="Node2"){
    dojo.style(dojo.byId("text2"),{background: 'green'});
    }else{
    dojo.style(dojo.byId("text2"),{background: 'red'});
    }

    Non seulement mon text ne passe jamais au vert ni au rouge, mais en plus il y a un bug: l'ombre qui suit le pointeur de la souris lors du drag ne disparaît pas au moment du drop, et je dois cliquer dans le vide pour qu'elle desparaisse

  9. #9
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Est ce que tu as mis le "dojo.subscribe" dans un "dojo.addOnLoad" ?
    As-tu des messages d'erreur dans la console de debug ?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    Oui, la fonction est dans un dojo.addOnLoad.

    Par contre pourrais-tu me dire comment faire pour afficher la console de deebug?

  11. #11
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script type="text/javascript" src="dojotoolkit/dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true">

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    Normalement, elle devrait apparaître je crois, puisque j'ai bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    djConfig="parseOnLoad: true, isDebug: true"
    Mais elle n'apparaît pas. Je vais essayer de trouver ce qui cloche

  13. #13
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Tu es sur Firefox ?
    Si c'est le cas il te faut firebug. Avec IE ca apparait normalement.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    Je suis sur IE. Je me rappelle que lorsque j'ai commencé avec dojo, la console apparaissait. Je vais ressortir les pages du début pour voir s'il y a une différence avec ma page actuelle

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    Je crois que ça vient du dojo.xd.js,. Pfffffffffff, c'est le genre de problème qui me fait vraiment ch***.

    Est-ce que tu pourrais mettre en pièce jointe celui que t'utilises? ou me mettre un lien vers une page internet?

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    Je craque là . Je ne trouve pas

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    Au final, le "contrôle" proposé par Daniel Gibot fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dojo.subscribe("/dnd/drop", function(source, nodes, copy, target){
    if(target.parent.id=="idSource"){
    dojo.style(dojo.byId("text2"),{background: 'green'});
    }
    });
    C'est bizarre parce que vendredi ça ne marchait pas, mais là c'est bon.
    C'est peut-être parce qu'entre temps, le Ghana s'est qualifié pour les quarts de finale
    Merci Daniel.

    Par contre, il y a toujours un truc assez étrange: pour afficher la console de debug, j'ai été obligé d'aller dans le dojo.xd.js et mettre Lorsque je mets dans mon .jsp, il ne le prend pas en compte.

    Comme quoi, quand on trouve la réponse à une question, une autre question surgit derrière...

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 58
    Points
    58
    Par défaut
    En effet, j'utilisais un dojo.xd.js que j'avais pêché je ne sais pas où. En mettant le dojo.js normal, la console de debug apparaît bel et bien

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

Discussions similaires

  1. Exécuter une action à la suite
    Par Phoenix0007 dans le forum Android
    Réponses: 3
    Dernier message: 17/12/2010, 18h06
  2. Réaliser une action avec un intervalle de temps
    Par Ladgalen dans le forum PyQt
    Réponses: 5
    Dernier message: 25/11/2010, 16h51
  3. Réalise une action à chaque destruction d'une instance d'une classe
    Par zlaptop dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 09/07/2010, 11h23
  4. Réaliser une action après une combinaison de touche
    Par Coussati dans le forum Débuter
    Réponses: 4
    Dernier message: 08/09/2009, 09h11
  5. Réaliser une action sur le serveur à une heure/date précise
    Par grenoult dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 22/02/2008, 15h50

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