ano-mr-site/front/page/slider-page.js

69 lines
2.2 KiB
JavaScript

/**
* @typedef {import('../lib/js-lib/slider.js').Slider} Slider
* @typedef {import('../lib/js-lib/page-manager.js').PageManager} PageManager
* @typedef {import('../lib/js-lib/ref-manager.js').RefManager} RefManager
*
* @typedef {Object} SliderPageArg
* @property {RefManager} slider_urls_manager - менеджер для слайдера
* @property {RefManager} icon_refs_manager - менеджер иконок
* @property {PageManager} page_manager - менеджер страниц
* @property {Object} properties - свойства маркера
*/
/**
* Инициализация slider-page
* @function
* @param {SliderPageArg} arg
*/
const slider_page_init = ({page_manager, icon_refs_manager, properties}) => {
/**
* Инициализация кнопки возврата на info_page
* @function
*/
const to_info_page_init = (slider) => {
const to_info_page = document.getElementById('to-info-page');
// Иконка кнопки
to_info_page.src = icon_refs_manager.get("map");
to_info_page.onclick = () => {
// Очистка
slider.clear?.();
page_manager.set_page('info-page', {
page_manager,
icon_refs_manager,
properties
});
};
};
/** Безопасный вызов */
recovery(
() => {
// Получение изображений из менеджера
const images = properties.slider
// Создание слайдера
const slider = new Slider({
slider: {
main: document.getElementById('slider'),
next: document.getElementById('next'),
previous: document.getElementById('previous')
},
next_ref: icon_refs_manager.get('next'),
previous_ref: icon_refs_manager.get('previous'),
images
});
// Кнопка назад к info_page
to_info_page_init(slider);
},
(...e) => {
console.log("Ошибка при инициализации (slider-page)");
e.forEach(er => { throw er });
}
)();
};