В этом репозитории находятся материалы тестового задания "Найди ошибки" для 14-й Школы разработки интерфейсов (осень 2018, Москва, Санкт-Петербург, Симферополь).
Для работы тестового приложения нужен Node.JS v9. В проекте используются Yandex Maps API и ChartJS.
Код содержит ошибки разной степени критичности. Некоторые из них — стилистические, а другие — даже не позволят вам запустить приложение. Вам нужно найти все ошибки и исправить их.
Пункты для самопроверки:
- Приложение должно успешно запускаться.
- По адресу http://localhost:9000 должна открываться карта с метками.
- Должна правильно работать вся функциональность, перечисленная в условиях задания.
- Не должно быть лишнего кода.
- Все должно быть в едином codestyle.
npm i
npm start
При каждом запуске тестовые данные генерируются заново случайным образом.
- Для начала подключаем
eslint
с конфигурационными правилами eslint-config-standard, что бы изначально была проверка на единый codestyle. - index.js. Приложение не запускается - синтаксическая ошибка.
Модуль map не использует экспорт по умолчанию, разработчик забыл фигурные скобки.
Правим:import initMap from './map'
=>import { initMap } from './map'
- Упс. Ошибки нет, но страница пустая. Инспектируем страницу, элемент
#map
схлопнут. Правим css. Добавляем ширину и высоту.
width: 100%;
height: 100%;
- map.js. Удаляем лишний
objectManager.clusters.options.set('preset', 'islands#greenClusterIcons');
Иконки у нас двух типов и они явно указаны в маппере:blueCircleDotIconWithCaption
иredCircleDotIconWithCaption
Сразу бросается в глазаvar
var filterMonitor
=>const filterMonitor
; Let's use const!
Также переносим методыadd
, как и загрузкуloadList
вниз для порядка. - Иконки появились совсем не там где мы ожидаем. Перепутан порядок
lat
иlong
. Правим маппер. - Отлично! Иконки появились, кластеризация работает, но что-то не так с подгрузкой деталей. Смотрим details. Синтаксические ошибки при объявлении
build
иclear
. \n Кстати оверрайдBalloonContentLayout.superclass.clear.call(this)
стоит после тела переопределяемого методаclear
. - Теперь детали подгружается, но беда с графиками. Идем в
chart.js
Первым делом правим codestyle:
data,
borderColor,
backgroundColor
- Теперь разбираемся с xAxes, yAxes, что-то не так с позиционированием. Смотрим на
getLabel
. Весьма странная логика для постраения лейбла.
Немного правок cxAxes
. Добавляем форматтер. Интерфейс английский, поэтому форматhA
type: 'time',
time: {
displayFormats: {
quarter: 'hA'
}
},
- В методе
getLabel
возвращаем дату.
P.S. Немного непонятно как должен выглядить в общем график, но кажется так. Тут могу ошибатся. - Мелкие фиксы по codestyle
- Удаляем ненужный popup.js