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 :

dojo.dnd.Source - accept [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 dojo.dnd.Source - accept
    J'ai un problème assez bizarre, parce qu'une manip qui marchait déjà sur une de mes pages ne marche plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(l=1;l<=nbColonnes;l++){
    	window["colonne"+l] = new dojo.dnd.Source("nodeA"+l, {accept: ["vehic"]});
    }
     
    colonne5.insertNodes(true, [link]);
    colonne5.forInItems(function(item, id, map){dojo.addClass(id,"vehic");});
    Comme vous l'aurez deviné, j'ai plusieurs colonnes, chacune source de dnd.
    Je voudrais affecter un critère d'acceptation à chaque colonne. Mais quand je mets le code ci-dessus, plus aucune colonne n'accepte de drop venant d'autres colonnes.
    Petite précision, les objets apparaissent bel et bien dans les colonnes, et quand j'enlève le {accept: ["vehic"]}., le drag'n'drop se réalise sans problème entre les différentes colonnes.

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Reprends ton appel de forInItems car la signature que tu utilises est erronée: aucun id n'est passé.
    Ensuite, fais attention car le accept ne fonctionne pas ainsi: il scrute le type de l'objet (text par défaut). C'est au moment où tu insères ton noeud que dojo va l'inspecter et chercher l'attribut dndType.

    ERE

  3. #3
    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 un peu de mal à comprendre ce que tu dis . Tu pourrais re expliquer stp?

  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
    Je me suis inspiré de ce site, et je ne vois pas de différence par rapport à ce que j'ai fait !?

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,
    Citation Envoyé par tapoutapou Voir le message
    Je me suis inspiré de ce site, et je ne vois pas de différence par rapport à ce que j'ai fait !?
    Extrait du site:

    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
    var catalog = new dojo.dnd.Source("catalogNode", {
        accept: ["inStock,outOfStock"]
    });
    catalog.insertNodes(false, [
        { data: "Wrist watch",        type: ["inStock"] },
        { data: "Life jacket",        type: ["inStock"] },
        { data: "Toy bulldozer",      type: ["inStock"] },
        { data: "Vintage microphone", type: ["outOfStock"] },
        { data: "TIE fighter",        type: ["outOfStock"] },
        { data: "Apples",             type: ["inStock"] },
        { data: "Bananas",            type: ["inStock"] },
        { data: "Tomatoes",           type: ["outOfStock"] },
        { data: "Bread",              type: ["inStock"] }
    ]);
    catalog.forInItems(function(item, id, map){
        // set up CSS classes for inStock and outOfStock
        dojo.addClass(id, item.type[0]);
    });
     
    var cart = new dojo.dnd.Source("cartNode", {
        accept: ["inStock"]
    });
    var wishlist = new dojo.dnd.Source("wishlistNode", {
        accept: ["inStock","outOfStock"]
    });
    dont un équivalent via les makup:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        <ul dojoType="dojo.dnd.Source" accept="inStock,outOfStock"
            id="catalogNode" class="container">
            <li class="dojoDndItem inStock" dndType="inStock">Wrist watch</li>
            <li class="dojoDndItem inStock" dndType="inStock">Life jacket</li>
            <li class="dojoDndItem inStock" dndType="inStock">Toy bulldozer</li>
            <li class="dojoDndItem outOfStock" dndType="outOfStock">
              Vintage microphone</li>
            <li class="dojoDndItem outOfStock" dndType="outOfStock">TIE fighter</li>
            <li class="dojoDndItem inStock" dndType="inStock">Apples</li>
            <li class="dojoDndItem inStock" dndType="inStock">Bananas</li>
            <li class="dojoDndItem outOfStock" dndType="outOfStock">Tomatoes</li>
             <li class="dojoDndItem inStock" dndType="inStock">Bread</li>
        </ul>
    Le accept ne se base pas sur une class mais sur un attribut dndType quand l'élément est parsé pr dojo (ce qui n'est pas ton cas ici) ou sur un attribut type quand tu utilises la fonction insertNodes.

    C'était le sens de ma remarque initiale.

    ERE

  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
    En effet, je me rends compte qu'il y a même en commentaire que le code suivant ne permet que d'ajouter des classes CSS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    catalog.forInItems(function(item, id, map){
        // set up CSS classes for inStock and outOfStock
        dojo.addClass(id, item.type[0]);
    });
    Mon problème est que toutes mes balises et tous mes objets avec lesquels je fais du drag'n'drop sont créés dans mon <script> et pas dans le <body>.
    Comment pourrais-je ajouter un dndType par du <script>?

  7. #7
    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 viens de trouver le code suivant. Je vais le tester pour voir s'il marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monNoeud.setAttribute("dndType", "monType");

  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
    Et hop, voici comment faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    colonne5.forInItems(function(item,id,map){
       item.type = ["vehic"];
    });
    Merci pour ton aide ERE.

  9. #9
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Une chose à retenir c'est que si on fait des drag and drop de noeuds, Dojo en interne ne stocke pas les noeuds concernés, mais leur id, leurs types, et la donnée associée à transférer. D'où ton code final.

    ERE

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

Discussions similaires

  1. [Dojo] Vider un container dnd.Source
    Par gdorchie dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 12/02/2010, 17h14
  2. [Dojo] dnd avec un widget dojo
    Par laminfodev dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 08/01/2010, 14h18
  3. [Dojo] dnd + onglet
    Par laminfodev dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 21/12/2009, 12h54
  4. [Dojo] dnd d'une div contenant un composant et un abel
    Par sedik.h dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 02/09/2009, 10h16
  5. [Dojo] dnd : du grid vers tree
    Par devkaty dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 16/07/2009, 09h42

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