Журнал синхронизации {#sec.offline_journal_synchronization}
--------------------

Один процесс синхронизации должен оформляться в отдельную панель. Каждая
панель содержит заголовок в формате:

`Синхронизация от ГГГГ-ММ-ДД ЧЧ:ММ`,

где ГГГГ-ММ-ДД ЧЧ:ММ - дата и время завершения процесса синхронизации.

Каждую панель можно сворачивать/разворачивать, нажимая по заголовку
самой панели. Ограничений на количество одновременно развернутых панелей
нет.

Свернутая панель содержит только заголовок с иконкой разворачивания.
Развернутая панель, в свою очередь, содержит заголовок с иконкой
сворачивания и содержимое панели. Иконка:
![](resources/img/offline/collapse_expand.png).

По умолчанию, при открытии экрана все панели свернуты (илл. «Журнал
синхронизации, вид по умолчанию»).

![Журнал синхронизации, вид по умолчанию](resources/img/offline/journal_android_2.png)

![Журнал синхронизации, вид по умолчанию](resources/img/offline/journal_ios_2.png)

Содержимое развернутой панели (илл. «Журнал синхронизации»):

-   `Синхронизация начата`

    `ГГГГ-ММ-ДД ЧЧ:ММ`

-   В зависимости от успешности синхронизации:

    -   успешная синхронизация:

        `Работа "название_работы" синхронизирована`

        `ГГГГ-ММ-ДД ЧЧ:ММ`

    -   неуспешная синхронизация:

        `Работа "название_работы": ошибка синхронизации`

        `ГГГГ-ММ-ДД ЧЧ:ММ`

    *Такая запись на каждую синхронизируемую работу*

    -   успешная синхронизация:

        `Документ "название_документа" синхронизирован`

        `ГГГГ-ММ-ДД ЧЧ:ММ`

    -   неуспешная синхронизация:

        `Документ "название_документа": ошибка синхронизации`

        `ГГГГ-ММ-ДД ЧЧ:ММ`

    *Такая запись на каждый синхронизируемый документ*

    -   успешная синхронизация:

        `Элемент хранилища "название_папки_или_файла_с_расширением" 
        синхронизирован`

        `ГГГГ-ММ-ДД ЧЧ:ММ`

    -   неуспешная синхронизация:

        `Элемент хранилища "название_папки_или_файла_с_расширением": 
        ошибка синхронизации`

        `ГГГГ-ММ-ДД ЧЧ:ММ`

    *Такая запись на каждую синхронизируемую папку или файл хранилища*

-   В зависимости от успешности всех записей синхронизации:

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

        `Синхронизация завершена успешно`

        `ГГГГ-ММ-ДД ЧЧ:ММ`

    -   неуспешная синхронизация (когда хотя бы одна запись имеет статус
        "неуспешная"):

        `Синхронизация завершена не успешно`

        `ГГГГ-ММ-ДД ЧЧ:ММ`

Каждая запись (кроме первой и последней) синхронизации имеет иконку
согласно статуса успешности:

-   успешная синхронизация - зеленая галочка
    ![](resources/img/offline/success.png)

-   условно успешная синхронизация - желтая галочка
    ![](resources/img/offline/almost_success.png)

-   неуспешная синхронизация - красный перечеркнутый круг
    ![](resources/img/offline/unsuccess.png)

![Журнал синхронизации](resources/img/offline/journal_android.png)

![Журнал синхронизации](resources/img/offline/journal_ios.png)

Журнал должен заполняться в режиме реального времени. В случае 5 подряд
неуспешных записей процесс синхронизации должен прерваться как
"неуспешный".

Экран имеет фиксированную высоту, в конце экрана всегда располагается
кнопка "Очистить" (серого цвета, идентификатор NOT_PREFERRED). Область
между верхней панелью и данной кнопкой прокручивается. По нажатию на
кнопку выдается сообщение "Очистить журнал синхронизации?" и при
положительном ответе очищается весь экран логов.

В журнале синхронизации необходимо хранить данные максимум 20-ти
последних успешных процессов синхронизации. На количество хранимых
неуспешных процессов синхронизации накладывается только одно
ограничение: неуспешная синхронизация по времени завершения должна
находиться в промежутке между первой по времени успешной и любой
последней. Каждый новый успешный процесс синхронизации удаляет первый по
времени успешный процесс, а также все неуспешные, которые оказались в
промежутке между 19-м и 20-м успешными процессами.


