Прогресс — это механизм информирования пользователя при долгих операциях (отправки формы или групповой операции). Долгая операция делится на условные шаги, и сопровождается комментариями.

Пример из orion:

Получение прогресса


Чтобы запустить механизм прогресса нужно к запросу добавить параметр progressid, значение параметра необходимо сгенерировать — оно должно быть уникальным для сессии, может состоять из цифр и/или букв (подойдет timestamp).

Для получения прогресса нужно вызвать функцию progress.get c параметром elid равный отправленному progressid.

В ответ панель сформирует XML следующего вида:

XML:

<doc ...>
  <action>product.install</action>
  <start>1376013950</start>
  <last>1376013971</last>
  <now>1376013974</now>
  <steps>6</steps>
  <done>4</done>
  <comment>Выполняю кэширование доступных пакетов</comment>
  <tparams>
    ...
  </tparams>
</doc>

Для вычисления процентов используются значения элементов:

  • steps — общее количество шагов;
  • done — количество выполненных шагов.

Комментарий берется из элемента comment.

Элементы:

  • start содержит время начало операции;
  • last — время завершения предыдущего шага;
  • now — время текущего запроса.

Для отображения прогресса используется функция progress.set.

Параметры:

  • elid — обязательный параметр. Соответствует значению authid:progressid, например: 7d1d70ae434b1c55f0323921:12312322, где 7d1d70ae434b1c55f0323921 — authid, 12312322 — progressid;
  • authid — id сессии клиента (значение параметра billmgrses5 в cookies клиента);
  • progressid — выставленный id прогресса (приходит параметром, если для формы выставлен атрибут progress=yes);
  • steps — добавляет n количество шагов, которые необходимо пройти;
  • done — прибавляет к done указанное значение. Когда done == steps, прогресс считается законченным;
  • msg — отображаемый комментарий.