Редактирование и сохранение модели
Цель: закрепить знания по работе с AJAX, добавив в проект работу с формой и задействуя оставшиеся конечные точки разработанного API.
Содержание и порядок выполнения лабораторной работы
Новая модель
- К прошлому заданию добавить кнопку создания новой модели.
- При ее нажатии раскрывается секция с формой и canvas c three.js.
- В форме присутствуют поля необходимые для заполнения документа в коллекции в базе данных. Для создания новой модели требуется выбрать минимум: тип объекта из 2-х вариантов или более вариантов (куб, сфера или другие), их базовую характеристику и цвет.
- В конце формы есть кнопка для сохранения модели. Если в памяти есть идентификатор _id модели, тогда используем конечную точку c методом PUT/PATCH в зависимости от вашей реализации, если же нет _id, то используем - POST.
- Внизу страницы должен быть canvas с подключенным к нему отрисовщиком из three.js. Для загрузки данных и их отображения на сцене используйте ObjectLoader класс.
- Для сохранения объекта в формате JSON используйте на его экземпляре метод .toJSON() и этот метод лучше вызывать при событии submit на форме. В этой работе проще на сервере хранить только информацию о mesh (geometry + material), а сцену, освещение, камеру сделать одинаковой для всех.
- Модель в сцене логичнее обновлять когда поле, с которым взаимодействовал пользователь потеряло фокус.
- После сохранения данных закрыть раздел с формой и отображением модели. Отправить запрос на получение нового списка всех моделей.
Существующая модель
- Если была нажата кнопка для просмотра модели в таблице, то полученные с сервера данные вы добавляете в форму в качестве значений.
- В Three.js с помощью класса ObjectLoader добавляется объект из пришедшего с сервера ответа в сцену.
- В конце формы есть кнопка для сохранения модели. Если в памяти есть идентификатор _id модели, тогда используем конечную точку c методом PUT/PATCH в зависимости от вашей реализации, если же нет _id, то используем - POST.
- Для сохранения объекта в формате JSON используйте на его экземпляре метод .toJSON() и этот метод лучше вызывать при событии submit на форме. В этой работе проще на сервере хранить только информацию о mesh (geometry + material), а сцену, освещение, камеру сделать одинаковой для всех.
- Модель в сцене логичнее обновлять когда поле, с которым взаимодействовал пользователь потеряло фокус.
- После сохранения данных закрыть раздел с формой и отображением модели. Отправить запрос на получение нового списка всех моделей.
Результаты выполнения лабораторной работы
- Финальный вариант приложения.
- Работающий локально сервер с подключением к бд и логикой, которая соответствует требованиям. Код сохранен в системе контроля версий.
- Статическая страница, которая с помощью AJAX взаимодействует с сервером.
Вопросы
Проверяется только работа веб-приложения.