Foros del Web » Programando para Internet » Javascript » Frameworks JS »

barra de % completado de x operación

Estas en el tema de barra de % completado de x operación en el foro de Frameworks JS en Foros del Web. Hola, en mi pagina web, hago unas operaciones que tarda una media de 1 segundo cada una, ahora sólo lo hago con 10 datos, pero ...
  #1 (permalink)  
Antiguo 18/12/2010, 12:47
 
Fecha de Ingreso: junio-2006
Ubicación: España
Mensajes: 122
Antigüedad: 18 años, 6 meses
Puntos: 2
barra de % completado de x operación

Hola, en mi pagina web, hago unas operaciones que tarda una media de 1 segundo cada una, ahora sólo lo hago con 10 datos, pero más tarde van a ser más, lo que quiero es algo visual conforme se que estoy haciendo algo.

lo que necesito creo que se deve hacer con ajax... y consiste en; yo a cada vuelta del bucle le hago un flush(); asi pues se por la vuelta que va, asi pues, si tengo 10 datos, y voy por el 2, tengo un 20% de la operación completada. Ya anteriormente lo habia intentado hacer con un css y recargado la pagina con javascript pero queda muy feo y se nota mucho.

entonces necesito una manera para yo pasar el porcentaje y que la imagen se me vaya creando sola, sin que se note el refresco..

gracias!
  #2 (permalink)  
Antiguo 19/12/2010, 08:58
 
Fecha de Ingreso: junio-2006
Ubicación: España
Mensajes: 122
Antigüedad: 18 años, 6 meses
Puntos: 2
Respuesta: barra de % completado de x operación

bueno, despues de unos cuantos quebradeos de cabeza, he encontrado esto.
Código Javascript:
Ver original
  1. <script language="javascript">
  2. //Creo una función que imprimira en la hoja el valor del porcentanje asi como el relleno de la barra de progreso
  3. function callprogress(vValor){
  4.  document.getElementById("getprogress").innerHTML = vValor;
  5.  document.getElementById("getProgressBarFill").innerHTML = '<div class="ProgressBarFill" style="width: '+vValor+'%;"></div>';
  6. }
  7. </script>
Código CSS:
Ver original
  1. <style type="text/css">
  2. /* Ahora creo el estilo que hara que aparesca el porcentanje y relleno del mismoo*/
  3.       .ProgressBar     { width: 16em; border: 1px solid black; background: #eef; height: 1.25em; display: block; }
  4.       .ProgressBarText { position: absolute; font-size: 1em; width: 16em; text-align: center; font-weight: normal; }
  5.       .ProgressBarFill { height: 100%; background: #aae; display: block; overflow: visible; }
  6.     </style>
Código HTML:
Ver original
  1. </head>
  2. <!-- Ahora creo la barra de progreso con etiquetas DIV -->
  3.  <div class="ProgressBar">
  4.       <div class="ProgressBarText"><span id="getprogress"></span>&nbsp;% completado</div>
  5.       <div id="getProgressBarFill"></div>
  6.     </div>
Código PHP:
Ver original
  1. <?php
  2.  /*Ahora procedo a crear la situación de importacion de registros, para este caso utilizaré el bucle FOR, también puede funcionar con WHILE. Recuerden sólo en este caso estaré utilizando for ya que es a modo de ejemplo y no estoy trabajando con base de datos*/
  3. $ValorTotal=25; //Valor total de registros
  4.  
  5. for($i=1;$i<=$ValorTotal;$i++){ //le digo que si es igual al total detengo el bucle
  6.  sleep(1); //descanso 1 minuto para mostrar de forma pausada el proceso
  7.  $porcentaje = $i * 100 / $ValorTotal; //saco mi valor en porcentaje
  8.  echo "<script>callprogress(".round($porcentaje).")</script>"; //llamo a la función JS(JavaScript) para actualizar el progreso
  9.  flush(); //con esta funcion hago que se muestre el resultado de inmediato y no espere a terminar todo el bucle con los 25 registros para recien mostrar el resultado
  10. }
  11. ?>

Código TODOJUNTO:
Ver original
  1. <html><head>
  2. <script language="javascript">
  3. //Creo una función que imprimira en la hoja el valor del porcentanje asi como el relleno de la barra de progreso
  4. function callprogress(vValor){
  5.  document.getElementById("getprogress").innerHTML = vValor;
  6.  document.getElementById("getProgressBarFill").innerHTML = '<div class="ProgressBarFill" style="width: '+vValor+'%;"></div>';
  7. }
  8. </script>
  9. <style type="text/css">
  10. /* Ahora creo el estilo que hara que aparesca el porcentanje y relleno del mismoo*/
  11.       .ProgressBar     { width: 16em; border: 1px solid black; background: #eef; height: 1.25em; display: block; }
  12.       .ProgressBarText { position: absolute; font-size: 1em; width: 16em; text-align: center; font-weight: normal; }
  13.       .ProgressBarFill { height: 100%; background: #aae; display: block; overflow: visible; }
  14.     </style>
  15. </head>
  16. <body>
  17. <!-- Ahora creo la barra de progreso con etiquetas DIV -->
  18.  <div class="ProgressBar">
  19.       <div class="ProgressBarText"><span id="getprogress"></span>&nbsp;% completado</div>
  20.       <div id="getProgressBarFill"></div>
  21.     </div>
  22.  
  23. <?php
  24.  /*Ahora procedo a crear la situación de importacion de registros, para este caso utilizaré el bucle FOR, también puede funcionar con WHILE. Recuerden sólo en este caso estaré utilizando for ya que es a modo de ejemplo y no estoy trabajando con base de datos*/
  25. $ValorTotal=25; //Valor total de registros
  26.  
  27. for($i=1;$i<=$ValorTotal;$i++){ //le digo que si es igual al total detengo el bucle
  28.  sleep(1); //descanso 1 minuto para mostrar de forma pausada el proceso
  29.  $porcentaje = $i * 100 / $ValorTotal; //saco mi valor en porcentaje
  30.  echo "<script>callprogress(".round($porcentaje).")</script>"; //llamo a la función JS(JavaScript) para actualizar el progreso
  31.  flush(); //con esta funcion hago que se muestre el resultado de inmediato y no espere a terminar todo el bucle con los 25 registros para recien mostrar el resultado
  32.  ob_flush();
  33. }
  34. ?>

De esta manera, a cada vuelta del bucle mando la info con flush() y hago su porcentaje.

¿Alguien me puede orientar o sabe como podria hacer ahora que vaya informando del proceso por el que voy? es decir, proceso X de Totales.

Gracias, Un saludo!

Etiquetas: ajax, barra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:49.