source: pmb4.2/trunk/fuentes/pmb/classes/progress_bar.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 3.6 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2005 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: progress_bar.class.php,v 1.4 2012-10-22 08:53:47 mbertin Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9class progress_bar{
10        protected static $nb_instance = 1;
11
12        var $html_id;   //Identifiant de l'instance
13        var $count;             //Valeur maximum de l'indicateur
14        var $pas;               //On affiche la progression tous les pas
15        var $nb_progress_call;  //Nombre d'appels
16        var $finish;                    //On a dépassé 100% (c.a.d. $nb_progress_call>$count)
17       
18        //L'échelle de valeur est de 0 à $count
19        //Le pourcentage est de $nb_progress_call/$count
20        //L'affichage est rafraichi tous les $pas appels
21       
22        //Constructeur.  $text
23        function progress_bar($text='',$count=0,$pas=1) {
24               
25                $this->html_id = self::$nb_instance;
26                self::$nb_instance++;
27                $this->show();
28                if($text)$this->set_text($text);
29                $this->count=$count;
30                $this->pas=$pas;
31                $this->nb_progress_call=0;
32                $this->finish=0;
33        }
34               
35        function show(){
36        print "
37                <div class='row' id='progress_bar_".$this->html_id."' style='text-align:center; width:80%; border: 1px solid #000000; padding: 4px;'>
38                    <div style='text-align:left; width:100%; height:16px;'>
39                        <img id='progress_".$this->html_id."' src='images/jauge.png' style='width:1%; height:16px'/>
40                    </div>
41                    <div style='text-align:center'>
42                        <span id='progress_text_".$this->html_id."'></span>&nbsp;
43                        <span id='progress_percent_".$this->html_id."'></span>
44                    </div>
45                </div>";
46            ob_flush();
47        flush();
48    }
49   
50    function init() {
51        print "<script type='text/javascript'>document.getElementById('progress_".$this->html_id."').src='images/jauge.png'</script>";
52        ob_flush();
53        flush();
54    }
55   
56    function set_percent($percent) {
57        // on envoit des espaces en plus pour que flush() vide bien le buffer (>256)
58        print "
59                <script type='text/javascript'>
60                        document.getElementById('progress_".$this->html_id."').style.width='".$percent."%';
61                        document.getElementById('progress_percent_".$this->html_id."').innerHTML='".$percent."%';
62                </script>
63               
64               
65                                                                                                                                                                                                                                             
66               
67               
68               
69               
70               
71               
72               
73               
74               
75               
76               
77               
78               
79               
80               
81               
82               
83           ";
84           ob_flush();
85       flush();
86    }
87       
88    function progress() {
89        if($this->finish) return;       
90        $this->nb_progress_call++;
91       
92        $percent=intval(100*($this->nb_progress_call/$this->count));
93       
94        if($percent>=100){
95                $this->set_percent(100);
96                $this->finish=1;
97        }       
98        if(!($this->nb_progress_call%$this->pas)){                             
99                $this->set_percent($percent);
100       
101        }
102    } 
103     
104    function set_text($text){
105        global $charset;
106        print "<script type='text/javascript'>document.getElementById('progress_text_".$this->html_id."').innerHTML='".htmlentities($text,ENT_QUOTES,$charset)."';</script>";
107        ob_flush();
108        flush();
109    }
110       
111    function hide(){
112        print "<script type='text/javascript'>var obj=document.getElementById('progress_bar_".$this->html_id."'); obj.parentNode.removeChild(obj)</script>";
113        ob_flush();
114        flush();
115    }   
116                                       
117}
118?>
Note: See TracBrowser for help on using the repository browser.