An open API service indexing awesome lists of open source software.

https://github.com/1vank1n/learning-1


https://github.com/1vank1n/learning-1

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# Осваиваем Flux

## База данных темных лордов

### Легенда

Вы помощник Оби-Вана кеноби и ваша задача создать интерфейс пользователя к базе данных ситхов. Оби Ван путешествует по галактике посмещая множество миров. Говорят, что в каждом мире где родился Тёмный Лорд можно найти некую "печать". Оби-Ван собирается проверить, правда ли это.

Оби-Ван дал Вам задание создать интерфейс пользователя, показывающий список Темных лордов, упорядоченный по отношению "учитель - ученик" (таким образом темный джедай в строке `N` является учителем темного джедая в строке `N+1`
Интерфейс также показывает планету на которой Оби-Ван находится в данный момент и подсвечивает красным, если один из джедаев, отображенных на экране родился на этой планете

### Требования

- Информация о текущей планете поступает через WebSocket по адресу `ws://jedi.smartjs.academy` и отображается наверху страницы

![](docs/1.gif)

- Для получения списка темных лордов существует URL `http://jedi.smartjs.academy/dark-jedis/`. Первый запрос должен быть отправлен для получения Darth Sidious: `http://jedi.smartjs.academy/dark-jedis/3616`
* HTTP ответ для каждого джедай содержит URL его ученика `response.apprentice.url` и учителя `response.master.url`.

- Кнопочки скролла: вверх/вниз, сдвигает лист на 2 позиции

- Когда список проскроллился, загружайте дополнительные строки **по одной** для заполнения пустых мест. **Не кешируйте** данные (другие пользователи могут вносить правки, а нам нужны самие свежие данные)

![](docs/2.gif)

- Никогда не делайте запрос для элемента, который находится сейчас за пределами списка. Отменяйте подобные "устаревшие" запросы, если пользователь быстро скроллит туда-обратно

![](docs/3.gif)

- Когда изменяется либо планета, на которой находится Оби-Ван, либо мы проскроллили список, проверить - существует ли в списке Темный Лорд, чья планета соответствует текущей планете. Если это так - отобразить этого Темного Лорда красным, и ОТМЕНИТЬ все выполняющиеся на данный момент HTTP запросы. Запретить scrolling до тех пор пока Оби-Ван не прыгнет на другую планету.

![](docs/4.gif)

- Список нельзя проскроллить вниз, если последний ситх в списке не имеет ученика. Список нельзя проскроллить вверх, если первый ситх в списке не имеет учителя. Используйте класс `.css-button-disabled` на кнопках для отображения этого статуса

![](docs/5.gif)

- Используйте CSS классы из `styles.css` для HTML, который может выглядеть приблизительно так:
```html



Obi-Wan currently on Tatooine




  • Jorak Uln


    Homeworld: Korriban



  • Skere Kaan


    Homeworld: Coruscant



  • Na'daz


    Homeworld: Ryloth



  • Kas'im


    Homeworld: Nal Hutta



  • Darth Bane


    Homeworld: Apatros









```

### Выполнение и сдача задания

Никакого шаблона нет. Вам необходимо создать все приложение с нуля. Обязательные требования:
* React 0.14
* Redux
* Webpack
* Webpack-dev-server
* https://github.com/erikras/ducks-modular-redux

Создайте git-репозиторий так, чтобы я мог видеть ваш прогресс по решению этого задания на регулярной основе