Доработки модуля ввода данных
Бизнес-требования
- Пользователь должен видеть корректную подпись и форматирование строки итогов, без схлопывания текста и с явным словом «Итого»; ввод и отображение должны соответствовать типу данных полей.
- После удаления строк идентификаторы строк должны оставаться последовательными и предсказуемыми для ссылок, формул и интеграций.
- Наличие комментария к ячейке должно быть заметно в интерфейсе без открытия каждой ячейки.
- Ограничения видимости столбцов формы, заданные в DIS для пользователя, не должны обходиться при открытии той же формы во Fastboard: пользователь не видит столбцы, которые ему запрещены.
- В модальных окнах со длинными списками выбора должен быть быстрый поиск по списку.
- В базовом и режиме редактирования доступность элементов настройки и работы с формой должна соответствовать правилам: выражение настраивается только в режиме редактирования; строка итогов доступна всегда; бизнес-процесс виден в режиме редактирования, но не настраивается; консолидация работает в штатном режиме без лишних ограничений.
Решение
Строка итогов
Пользовательский интерфейс
Расположение:
- Модуль ввода данных → ПКМ по форме → Добавить/редактировать строку итогов → Модальное окно редактирования строки итогов
Изменения:
- Добавить чекбокс "Показывать подпись «Итого» в первом столбце", по умолчанию не выбран
- Если выбран чекбокс "Показывать подпись «Итого» в первом столбце", то для первого столбца в блоке выбора операции агрегирования будет недоступен раскрывающийся список
- В раскрывающихся списках для выбора агрегации недоступны варианты, которые не применимы для типа данных столбца: функции СУММ, СРЗНАЧ, ПРОИЗВЕД, МАКС, МИН не работают на столбцах с НЕ числовым типом данных
Системная логика – фронтенд
- Если выбран чекбокс "Показывать подпись «Итого» в первом столбце", то блокируется возможность подсчета итогов по этому столбцу, в этом столбце в строке итогов пишется "Итого"+
- В раскрывающихся списках для каждого столбца должны быть только те варианты агрегации, которые доступны для указанного типа:
- Для типов "Целое число" и "Дробное число" – все варианты агрегации
- Для остальных типов – варианты агрегации НЕ СЧИТАТЬ, СЧЁТ, СЧЁТЗ
Пересчёт идентификаторов строк при удалении
Системная логика – бэкенд
При выполнении запроса на удаление (table/{tableId}/batch с передачей в теле запроса непустого массива delete) пересчитывать идентификаторы в системном столбце id заново, начиная с 1 по порядку без пропусков и возвращать на фронт
Визуальная индикация комментария к ячейке
Пользовательский интерфейс
Расположение:
- Модуль ввода данных → ячейки формы
Изменения:
- Ячейка с комментарием отличается от ячейки без комментария: добавляется маркер угла
- При наведении на ячейку с маркером комментария доступен просмотр текста комментария.
Системная логика – бэкенд
- Возвращать на фронт вместе с данными ячеек метку hasComments логического типа для каждой ячейки формы: True, если есть хотя бы один комментарий, False, если нет ни одного комментария
- Возвращать на фронт вместе с меткой комментария список комментов массивом объектов:
- каждый объект включает в себя текст комментария, автора, дату и время создания,
- отдельный массив для каждой ячейки с комментариями
Системная логика – фронтенд
- При наличии комментария у ячейки (hasComments = "True") рисовать маркер на углу ячейки
- При наведении курсора на ячейку с комментариями показывать во всплывающем окне комментарии списком в формате:
- Блок первого комментария:
- Автор + дата/время
- Комментарий
- Строка отступа
- Блок второго комментария
- и т.д. для всех комментариев
- Блок первого комментария:
- Если комментариев больше 5, то показывать последние 5
Согласованность ограничений видимости столбцов МВД и Fastboard (CLS)
Краткий сценарий:
- МВД отдает в FB список в формате: юзер айди в FB: список запрещенных столбцов
- Бэк FB создает таблицу-связь между юзерами и источниками-МВД
- В этой таблице-связи указываются userId, sourceId, bannedColumns – запрещенные колонки
- Фронт запрашивает file_preview от имени юзера. Бэк отдает только те колонки, которых нет в bannedColumns
- При вызове запроса на формирование скрипта с колонкой, которая недоступна пользователю (например, при вызове script/{id}/table/without-save) не пропускать такие запросы с возвратом ошибки
- Если есть возможность, контролировать загрузку данных из таких источников: например, устанавливать constraint для столбцов для определенных юзеров
Системная логика – бэкенд МВД
- При получении запроса PUT table/{tableId}/access/columns на обновление прав доступа к таблице передавать в Fastboard тело запроса с фронта:
- Заменяя user_id на user_id в Fastboard
- Добавляя table_id той формы, из которой пришли изменения
- Оставляя только can_read, игнорируя can_edit
{
"table_id": "id",
[
{
"column_name": "string",
"permissions": [
{
"user_id": "id",
"can_read": "boolean"
}
]
},
{
"column_name": "string",
"permissions": []
}
]
}
Системная логика – бэкенд Fastboard
- Требуется таблица-связь пользователей с источниками, необходимо, чтобы в этой таблице было поле bannedColumns (запрещенные столбцы)
- Настроить получение от МВД запросов на ограничение доступов к столбцам определенных источников, определенных пользователей:
- Если для user_id и table_id приходит column_name с permission.can_read = "False", то в таблицу-связь этого юзера и этой таблицы источника-МВД добавляется значение column_name в bannedColumns
- При любых запросах с фронта к этой таблице возвращать только те столбцы, которых нет в bannedColumns (например, в запросе file_preview)
- При вызове запроса на формирование скрипта с колонкой, которая недоступна пользователю (например, при вызове script/{id}/table/without-save) не пропускать такие запросы с возвратом ошибки
- Если есть возможность, контролировать загрузку данных из таких источников: например, устанавливать constraint для столбцов таблиц для определенных юзеров
- Если такой возможности нет, написать об этом в таске
Поиск по спискам в модальных окнах
Проблема: во многих полях ввода есть шеврон для раскрытия списка, но самого списка, по сути, нет – система отдает в формате подсказки возможные варианты. Некоторые списки некорректны, так как вызываются из окна одной таблицы, а должны ссылаться на другую таблицу
Доработать бэк – отдавать не только список форм, но и список ВСЕХ их полей.
Доработать фронт – везде сделать раскрывающиеся списки с выбором из этих значений, без свободы текста
Поправить некоторые списки: убрать значение "Выберите колонку" (массовая операция по подмножеству)
Пользовательский интерфейс
Расположение полей без списков:
- МВД → ПКМ по ячейке таблицы →
- Настроить выражение → Добавить правило → Целевая колонка
- Консолидация → Добавить источник →
- Таблица источник
- Добавить сопоставление ключей →
- Исходный ключ
- Ключевая колонка текущей таблицы
- Добавить сопоставление значений →
- Исходное значение
- Колонка текущей таблицы
Расположение списков с лишним значением:
- МВД → ПКМ по ячейке таблицы → Настроить бизнес-процесс → Включить →
- Начальный статус
- Переходы между статусами →
- Из статуса
- В статус
- Фильтры → Выберите колонку
Изменения:
- Для полей без списков – заменить на раскрывающиеся списки
- Для списков с лишними значениями – убрать дефолтное значение из списка, по умолчанию подставляется первое значение из набора данных
Системная логика – фронтенд
- Реализовать в указанных в пользовательском интерфейсе местах раскрывающиеся списки
- Во всех списках по умолчанию стоит первое из доступных значений
- Свободный ввод (как в поле ввода) запрещён
- Подтягивать в эти списки значения:
- В целевую колонку бизнес-правил – все колонки открытой таблицы
- В таблицу-источник в консолидации – все таблицы всех доступных проектов, первыми в списке идут таблицы текущего проекта, если имеются (кроме той таблицы, из которой вызвана консолидация)
- В исходный ключи и исходное значение консолидации:
- При наличии выбранной таблицы-источника – поля выбранной таблицы-источника
- При отсутствии выбранной таблицы-источника – ничего
- В ключевую колонку текущей таблицы и колонку текущей таблицы консолидации – поля из текущей таблицы
- Удалить первое значение в указанных в пользовательском интерфейсе раскрывающихся списках
Системная логика – бэкенд
Возвращать в ответ на запрос search не только проекты и таблицы, но и столбцы всех этих таблиц
Режим редактирования
Пользовательский интерфейс
Контекстное меню ячейки в режиме редактирования (с максимальным уровнем прав):
- Консолидация
- Настроить выражение
- Массовая операция по подмножеству
- Добавить строку итогов
- ———————————
- Добавить строку ниже
- Добавить строку выше
- Удалить строку
Контекстное меню ячейки в базовом режиме (с максимальным уровнем прав):
- Режим редактирования
- Редактировать форму
- Настроить права доступа
- ———————————
- Консолидация
- Настроить бизнес-процесс
- Добавить строку итогов
- Показать ID
- ———————————
- Импорт из Excel
- Экспорт в Excel
- ———————————
- Комментарий ячейки
- История ячейки
Системная логика – фронтенд
- Перегруппировать контекстные меню (см. порядок в пользовательском интерфейсе)
- Добавить разделители в контекстные меню (см. порядок в пользовательском интерфейсе)
- Изменить доступность кнопок:
- Настроить выражение: настройка доступна только при включённом режиме редактирования; в базовом режиме недоступна.
- Массовая операция по подмножеству: только в режиме редактирования
- Строка итогов: работает всегда, вне зависимости от режима.
- Настроить бизнес-процесс: в режиме редактирования отображается только интерфейсная часть текущего процесса, элементы настройки привязки и параметров недоступны
- Настроить права доступа: только в базовом режиме
- Консолидация: работает всегда, вне зависимости от режима.
Настройка цвета статуса бизнес-процесса
Критерии приёмки
- В строке итогов отображается слово «Итого» (или локализованный эквивалент); при стандартных размерах окна и колонок текст не сливается в нечитаемую строку; значения итогов соответствуют типам столбцов, при ошибке типа пользователь видит явную обратную связь.
- В консолидации при сопоставлении полей допустимы символы, согласованные с бэкендом, без ограничения «только латиница»; алиас задаётся, сохраняется и отображается в интерфейсе настроек и связанных местах.
- После удаления строк набор идентификаторов или порядковых номеров согласован с зафиксированной в реализации моделью и не ломает консолидацию, ссылки и повторное открытие формы; отображаемая нумерация без «дыр», если нумерация показывается.
- Ячейка с комментарием визуально отличима сразу после добавления комментария и при последующем просмотре таблицы.
- Пользователь с запретом на столбцы в DIS не видит эти столбцы во Fastboard при загрузке и дальнейшей работе; для этого пользователя не передаётся содержимое запрещённых столбцов в обход правил CLS.
- В согласованном перечне модальных окон модуля ввода данных поиск по списку фильтрует элементы ожидаемо; при отсутствии совпадений отображается понятное состояние пустого списка.
- В базовом режиме настройка выражения недоступна; строка итогов отображается и используется; консолидация работает штатно; в режиме редактирования выражение настраивается; бизнес-процесс виден, но не настраивается.