1. Добавлен функционал в интерфейс по управлению сертификатами и службой редактирования сертификатов. 2. Добавлена кнопка для добавления прокси и экран редактирования прокси.
70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
/* ============================================
|
||
Navigation
|
||
Управление навигацией
|
||
============================================ */
|
||
|
||
import { $, $$, hide, show, removeClass, addClass } from '../utils/dom.js';
|
||
|
||
// Класс для управления навигацией
|
||
export class Navigation {
|
||
constructor() {
|
||
this.navItems = $$('.nav-item[data-page]');
|
||
this.sections = {
|
||
services: $('sectionServices'),
|
||
sites: $('sectionSites'),
|
||
proxy: $('sectionProxy'),
|
||
settings: $('sectionSettings'),
|
||
vaccess: $('sectionVAccessEditor'),
|
||
addSite: $('sectionAddSite')
|
||
};
|
||
this.init();
|
||
}
|
||
|
||
init() {
|
||
this.navItems.forEach(item => {
|
||
item.addEventListener('click', () => {
|
||
const page = item.dataset.page;
|
||
this.navigate(page, item);
|
||
});
|
||
});
|
||
}
|
||
|
||
navigate(page, clickedItem) {
|
||
// Убираем active со всех навигационных элементов
|
||
this.navItems.forEach(nav => removeClass(nav, 'active'));
|
||
addClass(clickedItem, 'active');
|
||
|
||
// Скрываем все секции
|
||
this.hideAllSections();
|
||
|
||
// Показываем нужные секции по имени страницы
|
||
switch (page) {
|
||
case 'dashboard':
|
||
show(this.sections.services);
|
||
show(this.sections.sites);
|
||
show(this.sections.proxy);
|
||
break;
|
||
case 'settings':
|
||
show(this.sections.settings);
|
||
if (window.loadConfig) {
|
||
window.loadConfig();
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
hideAllSections() {
|
||
Object.values(this.sections).forEach(section => {
|
||
if (section) hide(section);
|
||
});
|
||
}
|
||
|
||
showDashboard() {
|
||
this.hideAllSections();
|
||
show(this.sections.services);
|
||
show(this.sections.sites);
|
||
show(this.sections.proxy);
|
||
}
|
||
}
|
||
|