69 lines
2.2 KiB
JavaScript
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 });
|
|
}
|
|
)();
|
|
};
|