PROGRESS BAR WIDGET

XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 - 1 févr. 2008 à 10:10
cs_bladinium Messages postés 3 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 25 avril 2009 - 25 avril 2009 à 15:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45586-progress-bar-widget

cs_bladinium Messages postés 3 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 25 avril 2009
25 avril 2009 à 15:45
Bonjour, merci pour ce script!

mais je suis complètement novice :p pourriez vous me dire le code a utilisé pour le lancer dans une page php ?

j'aimerais le premier des coloris, celui qui deviens vert a la fin. c'est une manuel que je souhaites pour signaler l'avancement d'une choses qui mettra plusieurs jours.

je vous remercie d'avance!
karasnake Messages postés 27 Date d'inscription dimanche 12 novembre 2006 Statut Membre Dernière intervention 16 juin 2009
16 juin 2008 à 16:55
Merci pour ton explication!!! Je me doutais qu'il fallait faire quelque chose de ce genre mais n'ayant jamais fais d'ajax pour le moment je vais en rester à la pour le moment! en tous cas merci de ton aide! J'ai hate de voir ton petit tuto la dessus !! bon courage pour ton rapport de stage aussi!
David
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
11 juin 2008 à 18:23
Bonjour,
le style css définit seulement la taille et la position de la barre de progression.
Sinon tout ce passe par les options que tu fournit au constructeur.

Pour ton problème, je crois que c'est bien plus compliqué que tu ne l'imagines.
Si tu veux faire évoluer la barre de progression en fonction de l'avancement de l'upload, il faut que ton serveur web te dise où c'est qu'il en est de la reception.
Et tout ceci bien sur en ajax pour pour voir l'afficher chez le client.

Un exemple serait:
// Tu crée ta barre de progression en style determiné dans le onsubmit:
var progressBar = null;
$("myForm").onsubmit = function(){
progressBar = new ProgressBar( $("container"), {classProgressBar: 'progressBar', style: ProgressBar.DETERMINATE, selection: 0} );

// Tu appels ton serveur
appelServer();
}

// La fonction qui appel ton serveur:
function appelServer(){
new Ajax.Request(url, { onSuccess: updateProgressBar } );
}

// Ton serveur te renvoie une page contenant uniquement un chiffre entre 0 et 100 ( pour faire simple ), donc quand tu récupères ta réponse dans la fonction updateProgressBar:
function updateProgressBar( transport ){
progressBar.setSelection( parseInt( transport.responseText ) );
}

Le fait de pouvoir montrer à l'utilisateur où en est l'avancement est très intéressant, mais ça demande un effort certains d'implémentation.
Quand j'aurai le temps (moi aussi j'ai un rapport de stage à faire, :( ), j'écrirai un petit tuto pour montrer la démarche plus proprement.

En tout cas bon courage à toi!
Pierrick
karasnake Messages postés 27 Date d'inscription dimanche 12 novembre 2006 Statut Membre Dernière intervention 16 juin 2009
11 juin 2008 à 18:03
tout d'abord merci pour ton exemple car il fonctionne a merveille!!
Par contre j'avais une petite question si je veux changer de baren mettre une autre une des barres progressive comment je dois faire la bar qui va se remplir en fonction de l'upload par exemple?
doit declarer un nouveau style de ce genre:
<style type="text/css">
.uploadProgressBar1{
position: absolute;
left: 25%;
top: 10%;
width: 50%;
height: 18px;
}
.uploadProgressBar2{
position: relative;
left: 25%;
top: 0%;
width: 50%;
height: 18px;
}
</style>
et dans mon javascript aussi je pense que je devais faire appel a l'autre prgresse bar... ^^
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
11 juin 2008 à 17:02
Je crois que tu trouveras ton bonheur dans ce petit exemple,
bonne fin de stage, :-P
Pierrick
karasnake Messages postés 27 Date d'inscription dimanche 12 novembre 2006 Statut Membre Dernière intervention 16 juin 2009
11 juin 2008 à 16:37
Très bon code même si je n'ai pas encore réussi à le mettre dans mon code en tous cas c'est ce que je recherche !
Bravo !!!
cs_stefane321 Messages postés 31 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 21 juillet 2009
10 juin 2008 à 02:04
Maintenant, sa fonctionne sous Internet Explorer mais ne fonctionne plus avec FireFox

Deplus,le positionnement ne marche plus.

La barre s'affiche en haut a gauche
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
7 juin 2008 à 12:06
Bonjour,
le code que je t'ai donné ( onbeforeunload ), lance la barre de progression lorsque l'utilisateur quitte la page: soit par validation du formulaire ( donc s'il y a un fichier par exemple dans le formulaire, il verra la barre s'afficher...), soit lorsqu'il clique sur un lien ( dans ce cas il ne verra pratiquement pas s'afficher la barre).
Le code s'execute lorsque tu instancie ( new ) la barre de progression.
Cordialement,
Pierrick
cs_stefane321 Messages postés 31 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 21 juillet 2009
6 juin 2008 à 22:24
Je ne suis pas certains de comprendre complètement.

Je fais exécuter le code comment?

Par un appel dans le tag body ou dans le submit de mon formulaire?
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
4 juin 2008 à 14:18
Bonjour,
en fait je pense que tu souhaites afficher une barre de progression pendant l'envoie du formulaire?!
Dans ce cas inutile de copier tout ce code, il te suffit de créer une barre de progression lors de l'événement onbeforeunload de l'objet window ou body!

<link rel="stylesheet" href="../css/progressBar.css" type="text/css"/>
<script src="../lib/prototype.js" type="text/javascript"></script>
<script src="../lib/ProgressBar.js" type="text/javascript"></script>
<script type="text/javascript">
window.onbeforeunload = function(){
while( document.body.children.length > 0 ){
document.body.removeChild( document.body.children[0] );
}
new ProgressBar( $(document.body), {classProgressBar: 'progressBar1'} );
}
</script>

Cdlt,
Après pour le positionnement relatif, je ne pense pas que ça pose problème dans la mesure ou la classe s'applique à la div principal de la progress bar!
cs_stefane321 Messages postés 31 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 21 juillet 2009
4 juin 2008 à 14:10
Dans mon fichier header.php j'ai mis:

<!--PROGESS BAR -->

<!--
/**
* @comment: Les css qui determine la taille des progress bar
* @import: progressBar
*/
-->
<link rel="stylesheet"
href="../css/progressBar.css"
type="text/css"/>

<!-- JavaScript -->

<!--
/**
* @comment: The prototype frameworks 1.6
* @import: prototype
*/
-->
<script
src="../lib/prototype.js"
type="text/javascript">
</script>

<!--
/**
* @comment: the ProgressBar class
* @import: ProgressBar
*/
-->
<script
src="../lib/ProgressBar.js"
type="text/javascript">
</script>

<!--
/**
* @comment: the progress bar tests
*/
-->
<script type="text/javascript">
//Instancie les barres de progression
progressBar1 = null;
progressBar2 = null;
progressBar3 = null;
function start(){
// Barre par défault en style indeterminé ( comme celle d'XP )
new ProgressBar( $("container"), {classProgressBar: 'progressBar1'} );

}

function updateProgressBar1( delta ){
progressBar1.setSelection( progressBar1.getSelection() + delta );
$("minimum").value= progressBar1.getMinimum();
$("selection").value= progressBar1.getSelection();
$("maximum").value= progressBar1.getMaximum();
}

function updateMinimum( ){
if( isNaN( $("minimum").value ) ){
$("minimum").value = progressBar1.getMinimum();
}else{
progressBar1.setMinimum( parseInt( $("minimum").value ) );
}
}

function updateSelection( ){
if( isNaN( $("selection").value ) ){
$("selection").value = progressBar1.getSelection();
}else{
progressBar1.setSelection( parseInt( $("selection").value ) );
}
}

function updateMaximum( ){
if( isNaN( $("maximum").value ) ){
$("maximum").value = progressBar1.getMaximum();
}else{
progressBar1.setMaximum( parseInt( $("maximum").value ) );
}
}

function startUpdateProgressBar2Selection(){
progressBar2.setSelection( ( progressBar2.getSelection() + 1 ) % progressBar2.getMaximum() );
setTimeout(startUpdateProgressBar2Selection, 200);
}

function startUpdateProgressBar3Selection(){
if( progressBar3.getSelection() == 0 )
progressBar3.setSelection( progressBar3.getMaximum() );
else
progressBar3.setSelection( progressBar3.getSelection() - 1 );
setTimeout(startUpdateProgressBar3Selection, 200);
}

function startUpdateProgressBar4Selection(){
progressBar4.setSelection( ( progressBar4.getSelection() + 1 ) % progressBar4.getMaximum() );
setTimeout(startUpdateProgressBar4Selection, 100);
}

function startUpdateProgressBar5Selection(){
if( progressBar5.getSelection() == 0 )
progressBar5.setSelection( progressBar5.getMaximum() );
else
progressBar5.setSelection( progressBar5.getSelection() - 1 );
setTimeout(startUpdateProgressBar5Selection, 200);
}

</script>
<!--PROGESS BAR -->

Dans mon formulaire j'ai mis:

Dans le fichier css jai mis le positionnement à: relative
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
4 juin 2008 à 13:42
Je peux juste t'inviter à donner ton bout de code pour qu'on le valide ensemble...
Cdlt,
Pierrick
cs_stefane321 Messages postés 31 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 21 juillet 2009
4 juin 2008 à 13:23
J'ai internet explorer 7, donc je dois avoir fait une erreur en tranférant le code dans ma page mais cest étrange que firefox l'exécute
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
4 juin 2008 à 09:36
Bonjour,
quelle version d'IE? Je viens de retester sous IE8 et IE7, ça roule!
La 6 est réellement dépassé maintenant, même chez les société, non ?!
Cordialement,
Pierrick
cs_stefane321 Messages postés 31 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 21 juillet 2009
3 juin 2008 à 22:01
De mon coté ce script ne fonctionne pas avec Internet Explorer mais fonctionne avec Firefox.

Pourquoi sa marche pas avec Internet Explorer?

Merci!
xeolin Messages postés 336 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 8 novembre 2011 2
10 févr. 2008 à 21:35
bravo, tres bonne source !
Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009
1 févr. 2008 à 12:17
Ok merci pour l'info, on va regarder ce qui n'est pas conforme dans ces zip
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
1 févr. 2008 à 11:29
Bonjour Nix,
avec la fonction export d'eclipse, je n'utiliserai donc plus cette fonction.
Merci de ton intervention.
Pierrick
Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009
1 févr. 2008 à 11:20
Pour info : J'ai dézippé et rezippé ton zip et c'est passé. (Cela ne passait pas avec le zip d'origine)
Avec quoi avais-tu compressé ce zip ? (Qu'on regarde pourquoi cela ne fonctionnait pas)
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
1 févr. 2008 à 10:14
Bonjour,
tout à fait d'accord, il faut gérer ça différement je m'y met.
Aussi je me suis aperçu qu'il n'y avait pas de méthode pour enlever la progress bar.
Je met la source à jour d'ici peu.
Merci pour la critique,
Pierrick
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
1 févr. 2008 à 10:10
C'est clean et bien implémenté. Y'a presque rien à dire.

Cependant, j'ai deux remarques :
- Tu as voulu te passer d'images pour créer tes controles. C'est bien et tu y es arrivé. Mais est-ce vraiment judicieux ? 9 calques pour créer un cluster... je ne suis pas fan de cette approche même si, il est vrai, celà permet de moduler la taille du controle à sa convenance.

- Tu repetes x fois pratiquement la même chose pour créer tes clusters et tes bordures. Pourrais-tu pas réduire celà à une seule et même fonction ?

Et en passant, vive prototype ! ^^'
Rejoignez-nous