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

Cognos Discussion :

Javascript dans un tree prompt


Sujet :

Cognos

  1. #1
    Membre habitué
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Points : 193
    Points
    193
    Par défaut Javascript dans un tree prompt
    Bonjour Messieurs,

    j'aurai besoin de votre aide sur du javascript. L'objectif du javascript est de parcourir tous les membres de niveau 1 de mon tree prompt dans une boucle et de selectionner le membre qui répond à un test. Au final c'est pour selectionner une valeur par défaut en dynamique et non en statique via les propirétés de l'invite.

    Je pars d'un script que j'utilise et qui fonctionne très bien mais sans boucle.

    Celui-ci selectionne le membre en fonction de sa position dans le tree prompt fixé en dur dans le code. Donc si jamais mon membre change de position c'est mort. D'où la le changement via une boucle.

    Le script de départ est donc celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <SCRIPT language=javascript>
    var node = window.treeTime.getRootNode().getChildren()[window.treeTime.getRootNode().getChildren().length-2];
    node.setSelected(true);
    node.updateNodeSelection();
    node.updateParent();
    window.treeTime.setLastSelectedNode(node);
    </script>
    Donc pour valider que dans une boucle c'est possible j'ai décomposé unitairement chaque étape. Le code donne ceci :

    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
    36
    <SCRIPT language=javascript>
     
    /*ligne 165*/
    /*chaîne à rechercher*/
    var rChaîne = "1P]";
     
    /*calcul la profondeur de l'axe (nbre de membre de nv1)*/
    var opt= window.treeTime.getRootNode().getChildren().length;
    alert('longeur : '+opt);
     
    var node= window.treeTime.getRootNode().getChildren();
    alert(node);
     
    /*mon compteur*/
    var i=-3
     
    /*le code du membre du tree prompt*/
    var member = node[window.treeTime.getRootNode().getChildren().length+i].getValue();
    alert('membre : '+member);
     
    /*nombre de caractère du code*/
    var longChaine = member.length;
    alert('longeur membre : '+longChaine);
     
    /*récuparation des 3 derniers caractères pour test*/
    var extract = member.substring(longChaine-3)
    alert('substring membre : '+extract);
     
    /*mon test*/
    if (rChaîne == extract)
    	alert('OK !!');
    else
    	alert('pas cool !');
     
     
    </script>
    et ça fonctionne.

    Maintenant voici les étapes intégrées dans la boucle. Sauf que je me prends une erreur ligne 176 (cf pj).
    J'ai tourné le script dans tous les sens avec différentes façon de procéder mais à chaque fois je me prends une erreur dans la tronche différente. J'en suis donc resté à cette version que je vous post avec cette erreur en espérant que vous pourrez m'aider.

    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
     
    <SCRIPT language=javascript>
     
    /*ligne 165*/
    /*chaîne à rechercher*/
    var rChaîne = "1P]";
     
    /*calcul la profondeur de l'axe (nbre de membre de nv1)*/
    var opt= window.treeTime.getRootNode().getChildren().length;
    alert('longeur : '+opt);
     
    for (i=1; i<=opt; i++) 
     {
       /*la ligne 176 car 4 c'est juste en dessous*/
       member=window.treeTime.getRootNode().getChildren()[window.treeTime.getRootNode().getChildren().length+i].getValue();
       alert(member);
       longChaine = member.length;
       extract=member.substring(longChaine-3);
       if (extract == rChaîne)
       {
            window.treeTime.getRootNode().getChildren()[window.treeTime.getRootNode().getChildren().length+i]
        }
    }
    </script>
    Je suis presque certain que c'est pas grand chose mais comme je suis vraiment pas une brute en javascript, outre que le code doit pas être très élégant, je ne m'en sors pas.

    Toutes suggestions et aide sera donc la bienvenue
    Images attachées Images attachées  

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    Je n'ai pas de TreePrompt sous la main - ni ailleurs - néanmoins, a vu d'oeil, je dirais que le problème est ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FOR (i=1; i<=opt; i++)
    opt a pour valeur le nombre d'élèments, disons 10 (pour illustrer). Hors, dans ce genre d'itération, tu dois partir du principe "zero based", donc de 0 a 9, pour parcourir tes 10 éléments.
    i doit donc partir de 0, et ne jamais arriver a 10.
    On aura donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for ( var i= 0; i < opt; i++ ) {...}
    En partant de i= 1, tu exclu de fait le premier élément de la liste, mais peut être est-ce voulu ?

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  3. #3
    Membre habitué
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Points : 193
    Points
    193
    Par défaut
    Salut Sunchaser,

    non, j'ai modifié mais pas de changement. Toujours la même erreur...

  4. #4
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    Il y a un truc que je ne comprends pas (décidément, dommage que je n'ai pas de TreePrompt sous la main):
    . On a une boucle qui va donc de i= 0, a i < opt,
    ou var opt= window.treeTime.getRootNode().getChildren().length;
    Puis dans la boucle, tu essais d’accéder a un des membres de "RootNode":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    member=window.treeTime.getRootNode().getChildren()[window.treeTime.getRootNode().getChildren().length+i].getValue();
    Or, tu reprends a nouveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.treeTime.getRootNode().getChildren().lengt
    lorsque tu précises l'indice de l'objet auquel tu veux accéder.
    J'aurais tendance a dire que cela devrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    member=window.treeTime.getRootNode().getChildren()[i].getValue();
    Dans ton cas, si window.treeTime.getRootNode().getChildren().length; = 10,
    alors dès le deuxième tour de ta boucle for, tu essaies d'accéder a un élément qui n'existe pas, car alors i= 1, et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    member=window.treeTime.getRootNode().getChildren()[window.treeTime.getRootNode().getChildren().length+i].getValue();
    tu essaies alors d'accéder a l'élément d'indice 11, alors que celui ci n'existe pas.

    De plus, dans le premier exemple que tu donnais et dans lequel tu semblais obtenir une valeur satisfaisante, tu affectais a "i" une valeur de départ "bien étrange", si je peux me permettre; je cite:
    /*mon compteur*/
    var i=-3
    Je ne sais pas comment est foutu le TreePrompt, mais de fait j'ai un doute ...

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

Discussions similaires

  1. erreur de syntaxe javascript dans ma page
    Par Oluha dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/02/2005, 14h53
  2. integration varaiables javascript dans du HTML
    Par developpeur_mehdi dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/11/2004, 14h54
  3. Javascript dans un formulaire
    Par MagicManu dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 26/10/2004, 11h25
  4. Réponses: 2
    Dernier message: 08/08/2003, 17h30
  5. [web] insertion javascript dans du perl
    Par laluna dans le forum Web
    Réponses: 3
    Dernier message: 28/07/2003, 09h50

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