Перейти к основному содержимому

Прогресс

Чтобы у черновиков в ЛК и иногда на карточках на разводящих страницах отображался прогресс, нужно в форме заявки завести поле с кодом:

progress

Тип поля: Скрытое поле

подсказка

Если поле не завести - прогресс просто не будет отображаться, но сайт не сломается.


Корнер-кейсы

Пользователь сохранил черновик, а поле progress завели только после этого

В таком случае, у пользователя на карточке заявки в ЛК не будет прогресса, пока он не сохранит черновик по кнопке Сохранить черновик или переходя между шагами.


Технические нюансы

Чтобы это работало, необходимо в некоторых стратегиях позабиться о создании первоначального тела заявки.

await this.getApplications()

/** Тут создаем тело, чтобы блоки заявки при валидации поняли, что они валидные.
* В основном для тех, где есть partID
* */
this.populateStoreWithInitialValues()

this.initBlockEntries()
this.initValidationStore()

/** Тут рассчитываем первоначальный прогресс. На случай, если придется создавать пустую заявку. */
await this.initProgress()

/** Тут при некоторых условиях создается пустая заявка, куда и отправляется первоначальный прогресс */
await this.getCurrentApplicationOrCreateOne()

this.setStores()

Например в классе ApplicationManagerEventPartInURL мы именно на случай создания пустой заявки наполняем текущий стор значений заявки полем partID.

export class ApplicationManagerEventPartInURL extends ApplicationManagerRegular {
populateStoreWithInitialValues() {
this.store.set({
partID: this.getEventPartID(),
})
}
}

Таким образом, если часть мероприятия по дефолту выбрана, прогресс будет совпадать.

Остальное, что касается блоков аккаунта, делается автоматически.