Ссылка на работающий пример: yandex-task-three.
- Трэк лист вместо одной композиции;
- Пауза, включая бинд на клавишу пробел;
- Следующий трэк, с учетом repeat, включая бинд на стрелку вправо;
- Предыдущий трэк с учетом repeat c функцией перезапуска трэка если было прослушано больше 5 секунд, включая бинд на стрелку влево;
- Повтор трэклиста;
- Воспроизведение в случайном порядке, сортируется сам список, для консистентности включения предыдущего трэка;
- Изменение громкости, включая бинд на колесо мыши и функцию mute "с памятью", функция доступна по нажатию на иконку громоксти;
- Более обширный вывод информации из метаданных, включая обложку альбома, если такая присутствует;
- Drag'n'drop нескольких композиций;
- Несколько вариантов визуализации, переключаемых кликом по панели визуализации;
- Progress bar, с текущим временем, длительностью, и возможностью выбирать определенный момент композиции кликом;
- Пометка текущего трэка с помощью оврелея обложки в трэк-листе, с отображением текущего состояния (play, pause);
- Возможность выбирать трэк путем клика по композиции в трэк-листе (если выбранная композиции уже играет, то произойдет пауза);
- Автоматическое переключение трэка по завершению проигрывания, с учетом repeat;
- Индикация загружающихся трэков в трэк-листе, с защитой от воспроизведения еще не загрузившихся.
К сожалению, сделать сортировку трэк-листа посредством drag'n'drop я не успел. Также, в силу того, что это тестовое задание, я не углублялся в изучение оптимальных настроек и характеристик эквалайзера для режимов POP, ROCK и т.д., а сами пресеты я взял с потолка. Надеюсь, что это не будет являться минусом, потому что при реальном задании я бы, естественно, уделил больше внимания этому вопросу.
Спасибо.