ProgressBar

Диджит ProgressBar, индикатор хода выполнения какойто операции, напоминает другие аналогичные индикаторы, которые можно встретить в приложениях, и предусматривает возможность работы в детерминированном и в недетерминированном режиме. Самое замечательное в этом диджите то, что о нем можно много не говорить. Фактически пример 15.3 прекрасно говорит сам за себя.

Пример 15.3. Типичный пример использования недетерминированного индикатора ProgressBar
style="width:300px">

Конечно, иногда вместо использования недетерминированного индикатора будет возникать необходимость получать данные от сервера и отображать фактический ход выполнения операции. Предположим, что у нас имеется серверная процедура, которая возвращает некоторое значение, свидетельствующее о ходе выполнения операции. Следующий фрагмент представляет собой модель такой процедуры:
import cherrypy
config = {
#передать этот статический файл...
'/foo.html' :
{
'tools.staticfile.on' : True,
'tools.staticfile.filename' : '/absolute/path/to/foo.html'
}
}
class Content:
def __init__(self):
self.progress = 0
@cherrypy.expose
def getProgress(self):
self.progress += 10
return str(self.progress)
cherrypy.quickstart(Content(), '/', config=config)

Файл foo.html, содержащий диджит ProgressBar, может выглядеть, как показано ниже:


Fun with ProgressBar!
href="http://o.aolcdn.com/dojo/1.1/dojo/resources/dojo.css" />
href="http://o.aolcdn.com/dojo/1.1/dijit/themes/tundra/tundra.css" />
type="text/javascript"
src="http://o.aolcdn.com/dojo/1.1/dojo/dojo.xd.js"
djConfig="parseOnLoad:true">


(body style="padding:100px" class="tundra")
Loading...


(/body)


Функция addOnLoad в этом примере каждую секунду обращается к URL /getProgress, чтобы получить некоторое значение и с помощью функции update диджита ProgressBar использовать его для индикации хода выполнения операции.


Применение функции setInterval вполне обычно при работе с ProgressBar.

Наконец напомню, что если потребуется отображать диджит ProgressBar при одновременном блокировании доступа к странице, чтобы заставить пользователя дождаться завершения операции, вы всегда можете поместить его внутрь диджита Dialog. Сделать это можно примерно так, как показано ниже:
var pb = new dijit.ProgressBar;
var d = new dijit.Dialog;
d.setContent(pb.domNode);
d.show();.



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
ColorPalette
Dialog
Editor
InlineEditBox
Menu

Вернуться в раздел: Dojo / Виджеты приложения