Завдання: Потрібно зробити UI для CRUD бекенду за допомогою HTML, CSS, JS, jQuery. Робитимемо адмін-панель для керування акаунтами онлайн-гри.
- Зробити fork із репозиторію: https://github.com/pavlo-plynko/project-frontend.git
- Завантажити свою версію проєкту на комп'ютер.
- Завантажити собі Tomcat: https://tomcat.apache.org/download-90.cgi.Важливо: Tomcat потрібен саме версії 9, а не 10
- Налаштувати запуск програми через IDEA: 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. |
Розбір проєкту. Дивитися після виконання!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ