/People

Primary LanguageSwift

People

MVVM + Coordinator, skeleton, Alerts, NVActivityIndicatorView - custom spinner, search, filter, sort, details screen

Реализовал согласно макету: https://www.figma.com/design/GRRKONipVClULsfdCAuVs1/KODE-Trainee-DEV-Весна%6024?node-id=30-20141&node-type=symbol&t=erS9nBON07OPLYUy-0

Simulator Screen Recording - iPhone 15 Pro - 2024-09-11 at 20 54 06

Ниже изложено решение задачи: "Оценить время на выполнени каждой задачи, а в скобках (реальное кол-во времени, которое ушло)"

  1. написать план - 2ч (2ч 10мин)
  2. создать РЕПО, создать gitignore, ветки, залить README.md - 0.5 (0.5)
  3. сделать основу MVVM + C - 2 (2)
  4. Написать Mapper - 2 (1)
  5. Написать NetworkService - 2 (0.5)
  6. Создать модель - 2 (0.7)
  7. Расширение к Date - 0.5 (0.5)
  8. сверстать экран ЛЮДИ:
    1. изучить как делать segment control (как переключать его, чтобы была полоска внизу) или иной элемент интерфейса - 2 (2.5)
    2. сверстать экран ЛЮДИ с таблицей, полем поиска, вставить иконки: лупу и фильтр, segment control - 2 (2)
    3. Создать ячейку ПЕРСОНА - 2 (2))
    4. Создать ячейку СКЕЛЕТОН - 2 (2)
    5. изучить как сделать пулл-то-рефреш и добавить на экран ЛЮДИ активити индикатор - 2 (1)
    6. Создать вью КРИТИЧЕСКАЯ ОШИБКА и добавить ее на экран ЛЮДИ - 1 (1)
    7. Написать код для показа скелетона - 2 (1)
    8. Код для первой загрузки данных(посредством UD), чтобы показать скелетон - 2 (1)
    9. создать enum States и наполнить его возможными состояниями - 2 (1)
  9. Разобраться в API - 1 (0.5)
  10. Написать Storage, используя FM - 2 (1)
  11. Написать Endpoint file - 1 (0.5)
  12. pull-to-refresh перезагружает список людей. Если в процессе обновления произошла ошибка, необходимо ее игнорировать. Если данные загрузились успешно, необходимо обновить список на главном экране. - 2 (0.5)
  13. При этом параметры поиска и сортировки, если они были выставлены ранее, должны учитываться и не должны быть сброшены - продумать и запоминать состояние состояние поиска, состояние сортировки - 2 (2)
  14. Имплементировать запомненные состояния - 2 (1)
  15. Изучить как сделать фильтрацию - 2 (2)
  16. Связать нажатие на bookMarkBtn, открывать bottom sheet 2.0.1 - Фильтр - 2 (3)
  17. Реализовать сортировку по алфавиту (выбрал, скрывается, скелетон, показываем) - 2 (1))
  18. Изучить как делают разбиение по блокам (год) в таблице (хедеры?) и сделать для фильтрации по ДР - 2 (3.5)
  19. Реализовать появление даты рождения в определенном формате, если выбрали сортировку по ДР - 2 (2)
  20. Изучить как делают ПОИСК - 2 (2)
  21. Когда пользователь вводит текст в поле поиска, необходимо локально фильтровать список и отображать только работников, соответствующих параметрам поиска. Поиск может осуществляться по имени, фамилии или никнейму, состоящему из двух символов - 2 (2)
  22. "...вместо статичных заглушек тоже сделать скелетоны, а заглушку показывать только если загрузить изображение не удалось" - 2 (1)
  23. В случае отсутствия результатов поиска необходимо отобразить информацию о том, что ничего не было найдено – состояние 2.0.2Г. - вью с лейблом - 1 (1)
  24. Экран ДЕТАЛИ
    1. основу MVVM + C для экрана ДЕТАЛИ - 2 (1)
    2. При тапе на сотрудника нужно открыть экран информации о нём - сверстать экран (вью(фото+ФИ+никнейм+название департамента) + таблица(2ячейки(ДР и сколько лет)+ (номер телефона+иконкаКнопка) - 2 (2)
    3. при нажатии на ячейку с номером показать Action Sheet с подтверждением звонка - 2 (0.5)
    4. При нажатии на кнопку с номером телефона должен начаться звонок, а сам Action Sheet закрывается - 2 (0.2)
  25. Custom alert after pull to refresh 2 (2)
  26. Custom activity indicator 1 (1)
  27. App icon 0.2 (0.2)