Приложение для просмотра документов и добавления аннотаций. Реализация для демонстрации выполнения тестового задания.
Демонстрация приложения: https://plohoj.github.io/doc-board/test-doc
- При изменении размера страницы (ответ Backend), аннотации на последующих страницах не теряют своего местоположения (потому что позиционирование выполняется относительно страницы в процентах, что так же решает проблему при масштабировании).
- Автоматический выбор масштаба страниц, при первом открытии приложении (особенно актуально на мобильном экране).
- Текст аннотации стремится не выходить за область экрана (актуально при большом масштабе).
- Нет возможности переносить аннотацию между страницами.
- Решение: Алгоритм (в сервисе), который будет искать страницу с которой пересекается аннотация, и перемещение аннотации на страницу с которой она пересекается.
Для поиска пересечения можно завести HashMap
{HTMLElement: DocBoardPageComponent }, в которую компоненты страниц будут сами себя регистрировать.
- Решение: Алгоритм (в сервисе), который будет искать страницу с которой пересекается аннотация, и перемещение аннотации на страницу с которой она пересекается.
Для поиска пересечения можно завести HashMap
- Интуитивный клик вне области аннотации для закрытия аннотации, создаёт новую аннотацию.
- В некоторых местах не учтено то, что ширина страниц может отличаться от
794px.- Решение: Реализовать сервис который загрузит все изображения и будет хранить ссылки на
HTMLImageElementв оперативной памяти. Тогда можно будет получить максимальную ширину страниц (изображений).
- Решение: Реализовать сервис который загрузит все изображения и будет хранить ссылки на
- Прокрутка страницы на сенсорном экране закрывает раскрытую аннотацию.
- Решение: Добавление единого сервиса, которое контролирует клики (тапы) и перетаскивания, и принимает решения об отмене и/или делегировании обработки событий.
- Удаление аннотации вызывает повторную отрисовку всех аннотаций после этой аннотации.
- Решение: Добавить фейковый
id(используемый только на Frontend) для аннотаций и использовать его вtrackBy.
- Решение: Добавить фейковый