Проект опциональный и делать его не обязательно.
Задание: Нужно сделать UI для CRUD бэкенда, используя HTML, CSS, JS, jQuery. Делать будем админ-панель для управления аккаунтами онлайн-игры.
- Сделать fork из репозитория: https://github.com/vasylmalik/project-front.git
- Скачать свою версию проекта к себе на компьютер.
- Скачать себе Tomcat: https://tomcat.apache.org/download-90.cgi. Важно: Tomcat нужен именно версии 9, а не 10.
- Настроить запуск приложения через Идею: Alt + Shift + F9 -> Edit Configurations… -> Alt + insert -> tom (в строку поиска) -> Local.
- После этого нужно нажать
CONFIGURE
и указать, куда скачан и распакован архив с Tomcat. - Во вкладке
Deployment
: Alt + insert -> Artifact… -> rpg:war exploded -> OK. - В поле
Application context
: оставить только/
(слеш). - Нажать
APPLY
. - Закрыть окно настройки.
- Запустить приложение. Для этого: Alt + Shift + F9 -> (имя конфигурации, я назвал 'App" у себя) -> Run.
- После деплоя приложения откроется новая вкладка в выбранном при конфигурации браузере. Отлично, сервер настроен, дальше нужно работать с двумя файлами:
<project_dir>/src/main/webapp/html/my.html
– здесь будет разметка и скрипты.<project_dir>/src/main/webapp/css/my.css
– здесь будет стили. Все что касается стилей – на твое усмотрение, никаких требований к ним нет.- В разметку (my.html) добавить таблицу (не забудь ей указать id), в которой указать названия колонок:
- #
- Name
- Title
- Race
- Profession
- Level
- Birthday
- Banned
- Добавить парный тег
<script>
– здесь будем писать функции. - Первая функция должна отправлять GET запрос на URL
"/rest/players"
– получить список. Результат нужно добавить к таблице из п.7 (вот и пригодился id таблицы). Если все сделал правильно – после перезапуска сервера у тебя на странице будет отображаться таблица на 4 строки. В первой строке – имена колонок, в остальных – данные, которые пришли с сервера. - Теперь, желательно, добавить таблице границы ячеек, а то информация вообще нечитаемая.
- Теперь займемся пейджингом. Для этого нужно:
- Под таблицей добавить секцию, например,
<div>
, в которой будут кнопки пейджинга. - Добавить функцию, которая отправит GET запрос на сервер, который возвращает общее количество аккаунтов на сервере. URL:
"/rest/players/count"
. - Добавить выпадающий список на 3-4 числовых значения, сколько показывать аккаунтов за раз. Числа должны быть в диапазоне от 3 до 20 включительно.
- В методе отображения списка аккаунтов (п.9) добавим расчет количества страниц, которые нужны при заданном количестве аккаунтов на страницу, чтоб можно было просмотреть все аккаунты.
- В функцию показа списка аккаунтов добавь параметр, который будет отвечать за номер страницы, которую показывать. Откорректируй URL, чтоб он параметрами запроса передавал "pageNumber" и "pageSize". Теперь при смене количества на страницу в выпадающем списке, должно показываться запрошенное количество аккаунтов:
- Теперь давай подкрасим номер текущей страницы, а то неудобно…
- Добавим в таблицу еще 2 колонки: Edit и Delete. Для каждой строки давай добавим иконки, которые будут отвечать за редактирование и удаление каждой записи. Можешь использовать либо картинки, которые есть в
<project_dir>/src/main/webapp/img/
, либо используй свои. - Напиши функцию, которая будет отвечать за удаление аккаунта. Для этого нужно отправлять DELETE запрос на сервер на URL
"/rest/players/{id}"
. При клике на картинку корзины – вызывай эту функцию. После вызова – не забудь обновлять список аккаунтов на текущей странице. - До удаления аккаунта с id=23
- После удаления аккаунта с id=23. Обрати внимание, никаких кнопок, кроме корзины, не нажималось.
- Теперь напиши функцию, которая отвечает за редактирование аккаунта. При клике на нее давай скроем кнопку “Delete”, а картинку кнопки “Edit” поменяем на “Save”.
- Теперь добавим функционал для редактирования аккаунта. По клику на кнопку “Edit”, кроме смены картинки, нужно делать поля редактируемыми:
- Name
- Title
- Race
- Profession
- Banned
- Теперь сделаем отправку изменений по клику на кнопку “Save”. Для этого нужно отправить POST запрос на URL
“/rest/players/{id}”
и в качестве тела запроса передать значения всех пяти полей, которые можно изменять в виде JSON. Используй JSON.stringify({…}); После изменения, не забудь перезагрузить данные на текущей странице. - Итак, из CRUD на данный момент должно быть сделано все, кроме “C” (Create). После кнопок пейджинга, добавь горизонтальную линию и текст о том, что здесь можно создать новый аккаунт. Кроме этого, добавь блоки текста и поля для ввода для параметров аккаунта:
- Name – текст, от 1 до 12 символов.
- Title – текст, от 1 до 30 символов.
- Race – выпадающий список, допустимые значения смотри в API.
- Profession – выпадающий список, допустимые значения смотри в API.
- Level – число от 0 до 100.
- Birthday – дата (<input type="date" …).
- Banned – булевое значение.
- Теперь добавь кнопку, по клику на которую все введенные данные будут отправляться на сервер. Используй POST запрос на URL
/rest/players
. После ответа сервера, не забудь очистить поля для ввода данных и перезапросить список аккаунтов на текущей странице. - Теперь можно добавить "красоты" через стили – здесь все на твое усмотрение. У меня вышло так:
Обрати внимание, что значение в полях для редактирования должны быть те, что есть в аккаунте.
Полезное: API сервера:
Get players list
URL | /rest/players |
Method | Optional: Integer pageNumber, Integer pageSize |
Data Params | None |
Success Response |
|
Notes |
pageNumber – параметр, который отвечает за номер отображаемой страницы при использовании пейджинга. Нумерация начинается с нуля. pageSize – параметр, который отвечает за количество результатов на одной странице при пейджинге
|
Get players count
URL | /rest/players/count |
Method | GET |
URL Params | None |
Data Params | None |
Success Response | Code: 200 OK Content: Integer |
Notes |
Delete player
URL | /rest/players/{id} |
Method | DELETE |
URL Params | id |
Data Params | None |
Success Response | Code: 200 OK |
Notes |
Если игрок не найден - ответ ошибкой с кодом 404. Если значение id не валидное- ответ ошибкой с кодом 400. |
Update player
URL | /rest/players/{id} |
Method | POST |
URL Params | id |
Data Params |
|
Success Response |
|
Notes | Обновляются только те поля, которые не null. Если игрок не найден в БД - ответ ошибкой с кодом 404. Если значение id не валидное - ответ ошибкой с кодом 400. |
Create player
URL | /rest/players |
Method | POST |
URL Params | None |
Data Params |
|
Success Response |
|
Notes | Мы не можем создать игрока, если:
В случае всего вышеперечисленного - ответ ошибкой с кодом 400. |
Разбор проекта. Смотреть после выполнения!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ