Требуется разработать небольшое одностраничное веб-приложение без использования JavaScript-фреймворков на основе открытого тестового задания компании Aviasales.
-
Необходимо создать HTML-страницу, на которой будут отображаться первые пять билетов соотвествующих выбранным фильтрам и условию сортировки.
-
Макет (Figma) можно скачать тут. Комментарии по верстке страницы с макета:
- Условие сортировки по критерию "Оптимальный" реализовывать не требуется. Достаточно реализовать сортировку по критериям "Самый дешевый" и "Самый быстрый".
- Показ "следующих 5 билетов" реализовывать не требуется, достаточно показать первые пять билетов, соответствующих выбранным критериям фильтрации и сортировки.
-
Данные для отображения билетов должны подгружаться с тестового сервера компании Aviasales. Описание серверного API представлено тут.
- Обратите внимание, что для получения полного набора данных для последующей фильтрации и сортировки требуется последовательно выполнить несколько одинаковых GET-запросов, на которые иногда сервер может отвечать ошибкой (это не означает, что необходимо перестать отправлять запросы дальше).
- Полученные данные о билетах необходимо сохранить в массиве, после чего применять операции фильтрации и сортировки к полученным данным в соответствии с теми условиями, которые выбраны в пользовательском интерфейсе.
- При перезагрузке страницы с приложением в браузере необходимо получать новый идентификатор поиска.
- С примером ответа сервера можно ознакомиться тут.
- ВНИМАНИЕ! В последнее время тестовый сервер компании Aviasales перестал быть доступен. Если тестовый сервер недоступен, то необходимо развернуть локальный сервер с использованием JSON Server и опубликовать с его помощью тестовые данные (при этом атрибут
stop:true
из тестовых данных нужно убрать, чтобы сервер запустился).
-
Картинки с логотипами авиакомпаний доступны по адресу http://pics.avs.io/99/36/{IATA_CODE_HERE}.png (требуется указать iata-код авиакомпании, например, http://pics.avs.io/99/36/SU.png); iata-код авиакомпаний можно получить в свойстве carrier билета.
-
Для взаимодействия с сервером необходимо использовать Fetch API.
-
Приложение должно работать в последних версиях браузеров. Соответственно можно использовать все современные возможности языка JavaScript, включая стандарты ES6, ES7 и т.п.
-
Программный код должен отражать понимание автором «хорошего кода». Для проверки стиля кода возможно настроить линтинг, а также инструменты автоматического форматирования кода (не обязательное требование).
-
Допускается использовать шаблонизаторы HTML, препроцессоры CSS, любые дополнительные библиотеки, а также настраивать систему сборки проекта (на усмотрение соискателя, инструменты можно использовать любые).
-
Для проверки реализации требований можно покрыть исходный код и приложение тестами, при этом используемые виды тестов и процент покрытия кода тестами остаются на усмотрение соискателя (не обязательное требование).
-
Всё, что не оговорено в задании явно, решается на усмотрение соискателя.
-
Результат выполнения задания требуется опубликовать в личном репозитории на GitHub, ссылку на репозиторий необходимо отправить на [email protected].