Прогресс
Чтобы у черновиков в ЛК и иногда на карточках на разводящих страницах отображался прогресс, нужно в форме заявки завести поле с кодом:
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(),
})
}
}
Таким образом, если часть мероприятия по дефолту выбрана, прогресс будет совпадать.
Остальное, что касается блоков аккаунта, делается автоматически.