Skip to content

mexsss/WalkActivityAggregator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Тестовое задание "Активность пользователя в течение дня"

Приложение для iOS, позволяющее проанализировать данные пользовательской активности и экспортировать реузльтат анализа в файл.

Задача

Ссылка на описание задачи:

Установка

Проект содержит зависимости только от стандартных библиотек Apple, дополнительная установка не требуется.

Комментарии

Помимо основных требований учтено:

  • Файл содержит противоречащие данные из раных источников активности.

Порядок проверки результата

  1. Запустить приложение
  2. Нажать кнопку Analyze
  3. Дождаться завершения анализа
  4. Нажать кнопку Share После нажатия на кнопку Share покажется стандартное окно шаринга iOS, и в лог консоли выведется путь до файла с результатом.

Строение проекта

Проект можно разделить на 4 условных слоя:

  • Бизнес слой
  • Сервисный слой
  • Интерфейс

Бизнес слой

Состоит из основного интерфейса модели:

  • Менеджер
    • WalkActivityManager
  • Сущности:
    • WalkActivityRecord
    • WalkHourActivity
    • WalkDayActivity
  • Вспомогательные компоненты:
    • WalkActivityParser
    • WalkActivityAnalyzer
    • WalkActivityExporter

WalkActivityManager

Представляет из себя фасад над всей моделью данных и представляет простой интерфейс для доступа к функциям анализа. Работа с ним осуществляется посредством методов analyze(...) и exportResults(), а так же свойства делегата через протокол WalkActivityManagerDelegate.

WalkActivityRecord

Стркутура, содержащая входные данные для анализа:

  • startDate
  • endDate а так же вспомогательные свойства и методы для работы с объектами.

WalkHourActivity

Класс, содержащий агрегированные данные об активности пользователя для определенного астрономического часа и позволяет:

  • расчитать эпизоды хотьбы с учетом требований к минимальной длительности активности и минимального интервала между эпизодами;
  • расчитать Balance Point для данного часа.

WalkDayActivity

Класс, содержащий агрегированные данные о накопленных Balance Point в течение определенного дня и позволяет расчитать Balance Day для данного дня.

WalkActivityParser

Класс-обертка, позволяеющий WalkActivityManager в удобном виде получить входные данные для анализа. Содержит вспомогательные объекты из сервисного слоя и данные о формате файла, позволяющие его считать. Операции работы с файлом выполняются асинхронно в отдельной очереди GCD.

WalkActivityAnalyzer

Класс-обертка, позволяющий WalkActivityManager передать на анализ данные о зарегистрированных активностях и получить результат по дням. Операции анализа выполняются асинхронно в отдельной очереди GCD.

WalkActivityExporter

Класс-обертка, позволяющий WalkActivityManager передать результат анализа и получить ссылку на экспортированный файл. Операция экспорта выполняется асинхронно в отдельной очереди GCD.

Сервисный слой

Состоит из вспомогательных классов:

  • TextFileReader - осуществляет построчное чтение текстового файла.
  • CSVParser - осуществляет парсинг строки файла и преобразование в массив строк.

Интерфейс

MainViewController

  • Хранит объект класса WalkActivityManager
  • Является делегатом WalkActivityManager и обрабатывает события парсинга, анализа и экспорта.
  • Управляет состоянием элементов MainView
  • Обрабатывает события MainView

MainView

  • Инкапсулирует работы с контролами UIKit
  • Представляет интерфейс для управления видимостью и доступностью элементов интерфейса
  • Обрабатывает события интерфейса и передает WalkActivityManager

MainView.xib

Верстка экрана приложения и связь с MainView.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages