Техническое задание для скрипта показа случайного блока:
1. Описание задачи:
Необходимо разработать скрипт, который будет отображать случайный блок из массива блоков на веб-странице. Каждый блок имеет класс "fact_block". При показе блока также должен быть сохранен его ID в localStorage. Если блок имеет класс "fact_picture_mini_curr", его ID также должен быть сохранен в отдельный массив "fact_picture_mini_curr" в localStorage.
2. Входные данные:
- Массив блоков с классом "fact_block"
- localStorage для сохранения показанных блоков и блоков с классом "fact_picture_mini_curr"
3. Выходные данные:
- Отображение случайного блока на веб-странице
- Сохранение ID показанного блока в localStorage
- Сохранение ID блока с классом "fact_picture_mini_curr" в отдельный массив в localStorage
4. Описание функций:
- getShownBlocks(): функция для получения уже показанных блоков из localStorage. Если такие блоки есть, возвращает массив ID блоков. Если таких блоков нет, возвращает пустой массив.
- saveShownBlock(blockId): функция для сохранения ID показанного блока. Получает ID блока и добавляет его в массив показанных блоков в localStorage. Если блок имеет класс "fact_picture_mini_curr", также сохраняет его ID в отдельный массив в localStorage.
- removeShowClass(): функция для удаления класса "show" у всех блоков. Проходит по массиву блоков и удаляет класс "show" у каждого блока.
- showRandomBlock(): функция для выбора и показа случайного блока. Получает массив показанных блоков и фильтрует массив блоков, оставляя только доступные блоки (которые еще не показаны и имеют ID, содержащий "fact_"). Если доступных блоков нет, показывает последний блок с ID "full_collection". Иначе, выбирает случайный блок из доступных, добавляет ему класс "show" и сохраняет его ID с помощью функции saveShownBlock(). Если у выбранного блока есть соответствующий блок с ID, начинающимся с "mini_", добавляет ему класс "fact_picture_mini_curr" и сохраняет его ID в отдельный массив в localStorage.
5. Шаги выполнения:
- Получить все блоки с классом "fact_block" и сохранить их в массив "blocks".
- Вызвать функцию removeShowClass() для удаления класса "show" у всех блоков.
- Вызвать функцию showRandomBlock() для выбора и показа случайного блока.
- Проверить наличие ID блоков с классом "fact_picture_mini_curr" в массиве "factPictureMiniCurrIds" из localStorage. Если такие ID есть, добавить класс "fact_picture_mini_curr" этим блокам.
6. Требования к localStorage:
- Ключ "shownBlocks" для хранения массива ID показанных блоков.
- Ключ "fact_picture_mini_curr" для хранения массива ID блоков с классом "fact_picture_mini_curr".
7. Тестирование:
- Убедиться, что случайный блок отображается на веб-странице при каждом обновлении страницы.
- Убедиться, что ID показанного блока сохраняется в localStorage.
- Убедиться, что блоки с классом "fact_picture_mini_curr" также сохраняются и отображаются правильно.
8. Ограничение показа случайного блока:
- Предусмотреть ограничение показа случайного блока один раз в 10 минут.
- Проверять время последнего показа случайного блока в localStorage.
- Если время последнего показа блока меньше 10 минут назад, не показывать новый случайный блок и продолжать отображать предыдущий блок.
- Если время последнего показа блока больше или равно 10 минут назад, показывать новый случайный блок и обновлять время последнего показа в localStorage.
9. Дополнительные функции:
- getLastShownTime(): функция для получения времени последнего показа случайного блока из localStorage. Возвращает время в миллисекундах или 0, если время не сохранено.
- saveLastShownTime(): функция
|