Zend_ProgressBar
    
    Introduction
        
        
            Zend_ProgressBar est un composant pour créer et mettre à
            jour les barres de progression dans différents environnements. Il consiste en un backend
            unique, qui affiche la progression au travers de l'un des multiples adaptateurs. A
            chaque mise à jour, il prend un chemin absolu et un message d'état, et appelle ensuite
            l'adaptateur avec certaines valeurs précalculées comme le pourcentage et le temps
            restant estimé.
         
     
    Utilisation basique de Zend_Progressbar
        
        
            Zend_ProgressBar est assez simple d'utilisation. Vous créez
            simplement une nouvelle instance de Zend_Progressbar, en
            définissant des valeurs minimum et maximum, et en choisissant un adaptateur pour
            afficher les données. Si vous voulez travailler avec un fichier, vous pouvez faire comme
            ceci :
         
        $progressBar = new Zend_ProgressBar(0, $fileSize, $adapter);  
   
    // Faire quelque chose  
   
    $progressBar->update($currentByteCount);  
}  
   
$progressBar->finish(); 
  
        
            Dans un premier temps, une instance de Zend_ProgressBar,
            avec une valeur minimum de 0, une valeur maximum correspondant à la taille totale du
            fichier et un adaptateur spécifique. Ensuite on travaille avec le fichier et à chaque
            boucle la barre de progression est mise à jour avec le nombre d'octets courant. A la fin
            de la boucle, le statut de la barre de progression est réglé à terminé.
         
        
            Zend_ProgressBar possède aussi une méthode
             refresh() qui recalcule le temps restant estimé et met à jour l'adaptateur.
            Ceci est pratique quand il n'y a aucune donnée à mettre à jour mais que vous souhaitez
            que la barre de progression soit mise à jour.
         
     
    Adaptateurs standard
        
        
            Zend_ProgressBar est fourni avec les deux adaptateurs
            suivants :  
            
        Zend_ProgressBar_Adapter_Console
    
    
        Zend_ProgressBar_Adapter_Console est un adaptateur de type
        texte pour les terminaux. Il peut automatiquement détecter la largeur du terminal mais
        supporte aussi des largeurs personnalisées. Vous pouvez définir quels éléments seront
        affichés avec la barre de progression et personnaliser leur ordre. Vous pouvez aussi définir
        le style de la barre de progression elle-même.
     
    Note: Reconnaissance automatique de la largeur de la console 
        
        
            shell_exec est nécessaire pour que ceci fonctionne sur les systèmes
            de type *nix. Sur Windows, il y a toujours un terminal fixe de 80 caractères de large,
            donc la reconnaissance automatique n'est pas nécessaire.
         
      
    
        Vous pouvez paramétrer les options de l'adaptateur soit via les méthodes
        set* soit en fournissant un tableau ("array") ou une instance
        Zend_Config en tant que premier paramètre du constructeur. Les
        options disponibles sont :
     
    
         - 
             
                outputStream : un flux de sortie différent, si vous ne souhaitez pas
                utiliser STDOUT. Peut être n'importe quel autre flux come php://stderr
                ou un chemin vers un fichier.
             
         
        - 
            
                width : soit un entier ou la constante AUTO de
                Zend_Console_ProgressBar.
             
         
        - 
            
                elements : soit NULL par défaut ou un tableau avec
                au moins l'une des constantes de Zend_Console_ProgressBar
                suivantes comme valeur :
             
            
                - 
                    
                        ELEMENT_PERCENT : la valeur courante en
                        pourcentage.
                     
                 
                - 
                    
                        ELEMENT_BAR : la barre qui va représenter le
                        pourcentage.
                     
                 
                - 
                    
                        ELEMENT_ETA : le calcul automatique du temps restant
                        estimé (NDT. : "Estimated Time for Accomplishment"). Cet élément est affiché
                        pour la première fois qu'après cinq secondes, car durant ce temps, il n'est
                        pas possible de calculer des résultats précis.
                     
                 
                - 
                    
                        ELEMENT_TEXT : un message de statut optionnel concernant
                        le processus courant.
                     
                 
             
         
        - 
            
                textWidth : largeur en caractères de l'élément
                ELEMENT_TEXT. Par défaut vaut 20.
             
         
         - 
             
                charset : encodage de l'élément ELEMENT_TEXT. Par défaut
                vaut "utf-8".
             
         
        - 
            
                barLeftChar : un caractère qui est utilisé du côté gauche de
                l'indicateur de la barre de progression.
             
         
        - 
            
                barRightChar : un caractère qui est utilisé du côté droit de
                l'indicateur de la barre de progression.
             
         
        - 
            
                barIndicatorChar : un caractère qui est utilisé pour l'indicateur
                de la barre de progression. Celui-ci peut être vide.
             
         
     
 
        Zend_ProgressBar_Adapter_JsPush
    
    
        Zend_ProgressBar_Adapter_JsPush est un adaptateur qui vous
        permet de mettre à jour une barre de progression dans un navigateur au travers de
        Javascript. Ceci veut dire qu'une seconde connexion n'est pas nécessaire pour recueillir le
        statut du processus courant, mais que le processus lui-même envoie son statut directement au
        navigateur.
     
    
        Vous pouvez paramétrer les options de l'adaptateur soit avec les méthodes
        set* soit en fournissant un tableau ("array") ou une instance de
        Zend_Config contenant les options en tant que premier paramètre du
        constructeur. Les options disponibles sont :
     
    
        - 
            
                updateMethodName : la méthode Javascript qui sera appelée à
                chaque mise à jour. La valeur par défaut est
                Zend_ProgressBar_Update.
             
         
        - 
            
                finishMethodName : la méthode Javascript qui sera appelée lorsque
                le statut terminé sera atteint. La valeur par défaut est NULL, qui veut
                dire que rien n'est fait.
             
         
     
    
        L'utilisation de cet adaptateur est assez simple. Premièrement vous créez une barre de
        progression pour le navigateur, soit avec Javascript ou auparavant en pur HTML. Ensuite vous
        définissez une méthode de mise à jour et optionnellement une méthode de finalisation en
        Javascript, les deux acceptant un objet JSON en tant qu'unique argument. Ensuite vous
        appelez une page Web avec un processus chronophage dans une balise iframe ou
        object masqué. Pendant que le processus tourne, l'adaptateur appelle la méthode
        de mise à jour à chaque mise à jour avec un objet JSON, contenant le paramètres suivants
        :
     
    
        - 
            
current : la valeur courante 
         
        - 
            
max : la valeur maximum 
         
        - 
            
percent : le pourcentage calculé 
         
        - 
            
                timeTaken : le temps depuis quand le processus courant est en
                marche
             
         
        - 
            
                timeRemaining : le temps estimé pour que le processus se
                termine
             
         
        - 
            
text : le message de statut optionnel, si fourni 
         
     
    Example #1 Exemple basique du fonctionnement côté-client  
        
        
            Cet exemple illustre un paramétrage basique du HTML, CSS et JavaScript pour
            l'adaptateur JsPush :
          
        <div id="zend-progressbar-container">  
    <div id="zend-progressbar-done"></div>  
</div>  
   
<iframe src="long-running-process.php" id="long-running-process"></iframe> 
  
        #long-running-process {  
    position: absolute;  
    left: -100px;  
    top: -100px;  
   
    width: 1px;  
    height: 1px;  
}  
   
#zend-progressbar-container {  
    width: 100px;  
    height: 30px;  
   
    border: 1px solid #000000;  
    background-color: #ffffff;  
}  
   
#zend-progressbar-done {  
    width: 0;  
    height: 30px;  
   
    background-color: #000000;  
} 
  
        function Zend_ProgressBar_Update(data)  
{  
    document.getElementById('zend-progressbar-done').style.width = data.percent + '%';  
} 
  
        
            Ceci créera un simple conteneur avec une bordure noire et un bloc qui indique le
            niveau du processus courant. Vous ne devez pas masquer l'iframe ou
            l'object par display: none;, car dans ce cas les navigateurs
            comme Safari 2 ne chargeront pas le contenu réel.
          
        
            Plutôt que de créer votre barre de progression personnalisée, vous pouvez utiliser
            une de celles disponibles dans les librairies JavaScript comme Dojo, jQuery etc. Par
            exemple, il existe :
          
        
            - 
                
                    Dojo : http://dojotoolkit.org/book/dojo-book-0-9/part-2-dijit/user-assistance-and-feedback/progress-bar
                 
             
            - 
                
                    jQuery : http://t.wits.sg/2008/06/20/jquery-progress-bar-11/
                 
             
            - 
                
                    MooTools : http://davidwalsh.name/dw-content/progress-bar.php
                 
             
            - 
                
                    Prototype : http://livepipe.net/control/progressbar
                 
             
         
     
    Note: Intervalle de mise à jour 
        
        
            Vous devez faire attention à ne pas envoyer trop de mises à jour, puisque chaque
            mise à jour a une taille minimum de 1ko. Ceci est requis par le navigateur Safari pour
            rendre et exécuter l'appel de fonction. Internet Explorer possède une limitation
            similaire mais à 256 octets.
         
      
 
        Zend_ProgressBar_Adapter_JsPull
    
    
        Zend_ProgressBar_Adapter_JsPull est l'opposé de jsPush, car il
        requiert de venir récupérer les nouvelles mises à jour, plutôt que d'envoyer les mises à
        jour vers le navigateur. Généralement, vous devriez utiliser l'adaptateur avec l'option de
        persistance de Zend_ProgressBar. Lors de l'appel, l'adaptateur envoie
        une chaîne JSON vers le navigateur, qui est comparable à la chaîne JSON envoyée par
        l'adaptateur jsPush. La seule différence est qu'il contient un paramètre supplémentaire
        "finished", qui vaut FALSE quand  update() est appelée
        ou TRUE quand  finish() est appelée.
     
    
        Vous pouvez paramétrer les options de l'adaptateur soit avec les méthodes
        set* soit en fournissant un tableau ("array") ou une instance de
        Zend_Config contenant les options en tant que premier paramètre du
        constructeur. Les options disponibles sont :
     
    
 
     
 
         
            
 | 
         
 
  |