Реализуйте базовый класс Collection
, со следующей логикой:
- У объекта
Collection
должно быть полеurl
в котором хранится адрес для получения коллекции ( к примеруhttp://jsonplaceholder.typicode.com/todos
) - У объекта
Collection
должен быть методlist(callback)
, который осуществляетGET
запрос на URL, указанный в полеurl
и принимает на входcallback
. После завершения запроса необходимо вызватьcallback
с массивом экземпляровCollection
вторым аргументом. Первым аргументом является ошибка, возникшая при загрузке Collection
должен иметь конструктор, принимающий на вход один параметр - объект и копирующий все его поля в this- У экземпляра
Collection
должен быть методsave(cb)
, работающий по следующей логике:- если у экземпляра
Collection
нет id - то необходимо выполнитьPOST
запрос наurl
. Содержимое запроса - все поля текущего экземпляраCollection
. В ответе необходимо получитьid
и сохранить его в экземплярCollection
- если у экземпляра
Collection
естьid
- то необходимо выполнитьPATCH
запрос на${url}/${id}
. В запрос необходимо включить только измененные поля экземпляраCollection
с момента последнего вызоваsave
cb
вызывается после того, как сохранение было успешно завершено. Единственный параметрcb
- ошибка, возникшая при сохранении илиnull
- если у экземпляра
- У объекта
Collection
должен быть методget(id, callback)
, который осуществляетGET
запрос на URL,${url}/${id}
. После завершения запроса необходимо вызватьcallback
с экземпляромCollection
первым аргументом. Первым аргументом является ошибка, возникшая при загрузке
Реализовать следующую логику приложения:
- Реализовать класс
User
унаследованный отCollection
. КлассUser
должен иметь методыlist
иget
аналогичныеCollection
, но возвращающий экземпляры классаUser
- Класс
User
должен иметь полеurl
http://jsonplaceholder.typicode.com/users
- При сохранении пользователя необходимо проверить следующие утверждения:
- у пользователя выставлены поля
name
,username
иemail
- у пользователя
email
является корректным адресом электронной почты
- у пользователя выставлены поля
- Реализовать класс
User
унаследованный отCollection
. КлассUser
должен иметь методыlist
иget
аналогичныеCollection
, но возвращающий экземпляры классаUser
- Класс
User
должен иметь полеurl
http://jsonplaceholder.typicode.com/users
- При сохранении пользователя необходимо проверить следующие утверждения:
- у пользователя выставлены поля
name
,username
иemail
- у пользователя
email
является корректным адресом электронной почты
- у пользователя выставлены поля
- Реализовать класс
Album
унаследованный отCollection
. КлассAlbum
должен иметь методыlist
иget
аналогичныеCollection
, но возвращающий экземпляры классаAlbum
- Класс
Album
должен иметь полеurl
http://jsonplaceholder.typicode.com/albums
- При сохранении альбома необходимо проверить следующие утверждения:
- у альбомы выставлены поля
userId
,title
- у альбомы выставлены поля
- Реализовать класс
Photo
унаследованный отCollection
. КлассPhoto
должен иметь методыlist
иget
аналогичныеCollection
, но возвращающий экземпляры классаPhoto
- Класс
Photo
должен иметь полеurl
http://jsonplaceholder.typicode.com/photos
- Экземпляры класса
User
должен иметь методgetAlbums(cb)
, который возвращает массивAlbum
, принадлежащих пользователю - Экземпляры класса
Album
должен иметь методgetPhotos(cb)
, который возвращает массивPhoto
, принадлежащих альбому - Реализовать следующую логику на странице:
- При загрузке отображается список имен пользователей
- При клике по имени пользователя отображается список его альбомов
- При клике по имени альбома отображается список фото в нем (используйте
thumbnailUrl
) - При клике по фото, оно открывается полноразмерно в новом окне