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

jQuery Discussion :

Folding comme dans les éditeurs de programmes


Sujet :

jQuery

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut Folding comme dans les éditeurs de programmes
    Bonjour,
    existe-t-il un plug-in, ou à défaut un moyen simple, d'avoir un effet de rétractation/extension comme dans les éditeurs de programmes ?

    Par exemple, j'aimerais passer du 1er code au 2nd par simple clic sur la ligne commençant par "def".

    Code "développé" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    x = 5
     
    def function(bidon):
        """
        Un petit commentaire...
        """
        print('Cette fonction est bidon...')
     
    y = 2
    Code "réduit" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x = 5
     
    def function(bidon):
    y = 2
    Le problème de trouver les parties à réduire ou développer n'est pas ma préoccupation, je me débrouillerais, c'est surtout l'effet de rétractation/extension qui m'intéresse.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Mais... tu parles de quoi là ?

    Dans le navigateur ? Quel serait l'intérêt ? Le code n'est pas visible dans la page.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour,
    en fait ce serait pour mettre des codes en ligne comme par exemple on peut le faire ici via :
    Le "folding" rendrait plus pratique la lecture de ces codes.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ben, oui, dans l'absolu, c'est possible, maintenant, reste à le coder, ce qui est autre chose. Il faut déjà déterminer comment sont composés les blocs supposés être "repliables" et tester sur des expressions régulières pour afficher / masquer les portions en fonction de la structure.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Ben, oui, dans l'absolu, c'est possible, maintenant, reste à le coder, ce qui est autre chose. Il faut déjà déterminer comment sont composés les blocs supposés être "repliables" et tester sur des expressions régulières pour afficher / masquer les portions en fonction de la structure.
    En fait, c'est juste la partie "on replie-on déplie" via JQuery qui m'intéresse, et qui me pose aussi souci. Pour ce qui est de repérer les parties à plier-déplier, je le ferais en amont via Python.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par rambc Voir le message
    En fait, c'est juste la partie "on replie-on déplie" via JQuery qui m'intéresse, et qui me pose aussi souci. Pour ce qui est de repérer les parties à plier-déplier, je le ferais en amont via Python.
    Il suffit de placer tes parties à afficher / cacher dans des balises dont tu modifieras le display en fonction de l'action souhaitée.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Points : 344
    Points
    344
    Par défaut
    C'est un truc comme cela qu'il te faut ?

    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
    <script type="text/javascript">
    	$(document).ready(function(){
    		// Si on clique sur un extrait
    		$(".extrait").click(function(){
    			// On cache l'extrait et on affiche le texte complet
    			$(this).hide();
    			$(this).next().show();
    		});
    		// Si on clique sur un extrait complet
    		$(".extrait_entier").click(function(){
    			// On cache le texte complet et on affiche l'extrait
    			$(this).hide();
    			$(this).prev().show();
    		});
    	});
    </script>
    <div class="extrait" style="cursor:pointer;">bla bla bla ...</div>
    <div class="extrait_entier" style="display:none;">bla bla bla bla bla bla</div>
    Sébastien Courjean
    Développeur Web
    scourjean@cyres.fr
    http://www.cyres.fr/

  8. #8
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Pas vraiment mais il y a un début. Disons que pouvoir avoir un div affiché-caché quand on clique sur la ligne qui précède serait bien.

    Là où cela me dépasse, c'est qu'il faudrait une fonction qui agit indépendamment sur les div autorisés à être réduits ou agrandis. Je ne peux pas faire une fonction par div dépliable.

    J'espère être un peu plus clair.

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Pas vraiment mais il y a un début. Disons que pouvoir avoir un div affiché-caché quand on clique sur la ligne qui précède serait bien.
    Euh... à ce point, tu devrais pouvoir adapter toi-même

    Là où cela me dépasse, c'est qu'il faudrait une fonction qui agit indépendamment sur les div autorisés à être réduits ou agrandis. Je ne peux pas faire une fonction par div dépliable.
    C'est bien ce que fait le code de scourjean : pour tous les éléments dont la classe est celle donnée, il affiche ou masque les éléments lorsqu'on clique dessus
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Oui mais il faudrait que je nomme chaque div. Ne pourrait-on pas créer une classe "folding" par exemple, et avoir ensuite un code qui n'agisse que le div concerné ?

    J'espère être un peu plus clair.

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par rambc
    Ne pourrait-on pas créer une classe "folding" par exemple, et avoir ensuite un code qui n'agisse que le div concerné ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(".extrait").click(function()
    C'est bien une classe qui défini les éléments à prendre en compte...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Et que ce passera-t-il si j'ai deux div de type "extrait". La fonction va-t-elle agir indépendamment suivant chaque div ?

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Oui, c'est comme ça que fonctionne jQuery...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  14. #14
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Oui, c'est comme ça que fonctionne jQuery...
    Merci. Je viens de tester et c'est nickel. On obtient une ébauche parfaite pour débuter :
    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
    37
    38
    39
    40
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
     
            <script type="text/javascript">
                $(document).ready(function(){
                    // Si on clique sur un extrait
                    $(".extrait").click(function(){
                        // On cache l'extrait et on affiche le texte complet
                        $(this).hide();
                        $(this).next().show();
                    });
                    // Si on clique sur un extrait complet
                    $(".extrait_entier").click(function(){
                        // On cache le texte complet et on affiche l'extrait
                        $(this).hide();
                        $(this).prev().show();
                    });
                });
            </script>
        </head>
     
        <body>
    Un exemple vite fait.
    <br/><br/>
    x = 5
    <br/><br/>
    <div class="extrait" style="cursor:pointer;">+ def function(bidon):</div>
    <div class="extrait_entier" style="display:none;">
    def function(bidon):
    <br/>    """
    <br/>    Un petit commentaire...
    <br/>    """
    <br/>    print('Cette fonction est bidon...')
    </div>
    <br/>y = 2
     
    </html>

  15. #15
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Voici une version plus fonctionnelle obtenue grâce à certains messages sur ce forum :
    Code html : 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
    37
    38
    39
    40
    41
    42
    43
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <!--
    Sources :
        http://www.developpez.net/forums/d995664/webmasters-developpement-web/javascript/bibliotheques-frameworks/jquery/folding-editeurs-programmes/#post5578498
        http://www.developpez.net/forums/d999768/webmasters-developpement-web/javascript/bibliotheques-frameworks/jquery/debutant-acceder-sous-div-div/#post5591994
    -->
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript" />
     
            <script type="text/javascript">
                $(document).ready(function(){
                    // Si on clique sur un extrait
                    $('span[class^="fold"]').click(function(){
                        // On cache l'extrait et on affiche le texte complet
                        $(this).next().toggle();
                    });
                });
            </script>
        </head>
     
        <body>
     
    <code>
        <span class="fold_1" style="cursor:pointer;">+ def function(bidon):</span>
        <div class="content_fold_1">
            &nbsp;&nbsp;&nbsp;&nbsp;"""
            <br/>&nbsp;&nbsp;&nbsp;&nbsp;Un petit commentaire...
            <br/>&nbsp;&nbsp;&nbsp;&nbsp;"""
            <br/>&nbsp;&nbsp;&nbsp;&nbsp;print('Cette fonction est bidon...')
            <br/>&nbsp;&nbsp;&nbsp;&nbsp;<span class="fold_2" style="cursor:pointer;">+ for i in range(5):</span>
            <div class="content_fold_2">
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(i)
            <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(i**2)
            </div>
        </div>
    </code>
     
        </body>
    </html>

  16. #16
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Petite amélioration du code pour ne plus utiliser &nbsp; :
    Code html : 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <!--
    Sources :
        http://www.developpez.net/forums/d995664/webmasters-developpement-web/javascript/bibliotheques-frameworks/jquery/folding-editeurs-programmes/#post5578498
        http://www.developpez.net/forums/d999768/webmasters-developpement-web/javascript/bibliotheques-frameworks/jquery/debutant-acceder-sous-div-div/#post5591994
    -->
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"/>
     
            <script type="text/javascript">
                $(document).ready(function(){
    // We catch the event "click on a span with class starting with ''fold''".
                    $('span[class^="fold"]').click(function(){
    // We hide/show the div giving the subblock just after the line clicked.
                        $(this).next().toggle();
    // We change "+" en "-" at the start of the line clicked.
                        newText = $(this).text();
     
                        if(newText[0] == '+'){
                            foldSymbol = '-'
                        }else{
                            foldSymbol = '+'
                        }
     
                        newText = foldSymbol + newText.substring(1,newText.lenght);
     
                        $(this).text(newText);
                    });
                });
            </script>
        </head>
     
        <body>
     
    <code>
        <pre><span class="fold_1" style="cursor:pointer;">- def function(bidon):</span>
        <div class="content_fold_1">    """
        Un petit commentaire...
        """
        print('Cette fonction est bidon...')
     
        <span class="fold_2" style="cursor:pointer;">- for i in range(5):</span>
        <div class="content_fold_2">        print(i)
            print(i**2)</div>
        </div></pre>
    </code>
     
        </body>
    </html>
    Il resterait à mettre le signe + ou - dans une marge à gauche par rapport au bloc principal du code. je ne sais pas si c'est faisable, ou bien s'il faut envisager de passer par des tableaux.

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

Discussions similaires

  1. accès web comme dans les hotels
    Par cyrianox dans le forum Debian
    Réponses: 3
    Dernier message: 19/04/2011, 14h31
  2. Réponses: 3
    Dernier message: 28/03/2011, 15h58
  3. Implémentation d'OCL dans les langages de programmation
    Par Tristan Zwingelstein dans le forum UML
    Réponses: 8
    Dernier message: 18/01/2010, 21h02
  4. Réponses: 3
    Dernier message: 26/02/2007, 18h00
  5. Réponses: 4
    Dernier message: 12/11/2006, 18h49

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