PageProgressController.js
Передача данных в оболочку осуществляется с помощью функции courseController.page.progress.set. И хранится точное значение от 0 до 100. Данный способ сохранения прогресса не позволяет понять откуда пришел прогресс. Чаще всего прогресс приходит из фреймсетов, и после перезагрузки страницы нужно восстановить прогресс каждого фрейма, чтобы продолжить корректно его отслеживать.
Вот так выглядит интерфейс класса PageProgressController, остальные методы нужны для внутренней работы класса и не должны вызываться извне
class PageProgressController {
static init(){/*...*/}
set(pageId, id, value) {/*...*/}
}
PageProgressController.initстатический метод, его нужно вызвать при инициализаци и виджета. Метод определяет глобальную переменнуюpageProgressController. Повторные вызовы метода не будут изменять глобальную переменнуюset(pageId, id, value)- добавляет к прогрессу страницы (pageId) прогресс (value) для элемента (id). Элементом может выступить любая уникальная сущность на странице. В данный момент это frameset elearning виджеты, у каждого из которых есть уникальный id
Весь прогресс сохраняется в оболочку, в переменную widgetsPageProgress, она определена в статической переменной PageProgressController.WRAPPER_VARIABLE
Важно! В прогресс всего курса и в прогресс отдельной сущности нельзя передать меньший прогресс чем был установлен ранее, меньшие значения просто будут проигнорированы. Таким образом нельзя уменьшить прогресс курса, возможен только полный restart