Эта статья про реализацию логики автосохранения для форм в бизнес-системах — то есть в системах для регулярной долгой работы.
Я не зря поместил сюда мой стишок-пирожок про Колю. Современные масс-сервисы толкают нас в сторону автосохранения: например, Гугл-Диск и приложения на нём, или тот же Дзен автоматом сохраняет публикацию в процессе написания.
Если есть возможность — делайте автосохранение.
Что учесть при режиме с автосохранением:
- Нужна контекстная история изменений: кто, когда, с каких и на какие менял данные. Если пользователь где-то ошибся и заметил это через время, то ему могут потребоваться прежние данные для восстановления. Кстати, версионность, когда можно откатиться к какой-то сохранённой версии, делать не обязательно. Часто пользователям достаточно найти прежние верные данные и внести их — поддерживать для этого версионность слишком дорого.
- Режим автосохранения должен быть выдержан по всей системе. Нельзя делать автосохранение для части форм — надо делать для всех.
- Пользователь должен регулярно получать информацию о том, что данные сохранены. Необходимо сделать индикатор, который будет показывать, что данные сохраняются и сохранены. Этот индикатор должен быть всегда в зоне видимости (не оставаться вверху при скролле).
- Автосохранение должно срабатывать не только на потерю фокуса (при переходе от поля к полю). Например, могут быть текстовые поля на форме, в которые пользователь будет вбивать приличный объём текста. Если сохранение работает на фокусы, то пока пользователь не закончит текст и не уйдёт с поля, сохранение не сработает. Это плохо — может произойти что угодно в процессе написания большого текста. Фокусное автосохранение необходимо подстраховать, например, автосохранением при бездействии — если пользователь замер на 3–5 секунд, то сохраняем в это время.
- Автосохранение заменяет только ручное сохранение, а не жизненный процесс формы. Может потребоваться кнопка, которая будет переводить запись из состояния “Черновик” в состояние “Я закончил создавать эту запись”.
Если автосохранение не сделали, то помогите пользователю не потерять введённые данные:
- Не делайте короткие сессии для работы с системой.
- При попытке закрыть форму с несохранённой информацией — уведомляйте пользователя об этом.