Add endpoint telezab/users Add endpoint telezab/users/add Add endpoint telezab/users/del Add endpoint telezab/users/get Add endpoint telezab/regions Add endpoint telezab/regions/add Add endpoint telezab/regions/del Add endpoint telezab/regions/get Rework Active Triggers button now don't need subscription Rework Help button Add option to change what Notification type you want reciving All or Disaster Only Rework Settings button removed some misc buttons Rework Registration mechanism now using POST JSON users/add Rework formating of Zabbix Triggers for Active triggers and Notification from Zabbix
134 lines
4.9 KiB
JavaScript
134 lines
4.9 KiB
JavaScript
$(document).ready(function() {
|
||
const regionList = $('#region-list');
|
||
const userInfo = $('#user-info');
|
||
const userList = $('#user-list');
|
||
const curentRegion = $('#curent-region')
|
||
const pagination = $('#pagination');
|
||
let regions = [];
|
||
let users = [];
|
||
let selectedRegionName = null;
|
||
let selectedRegionId = null;
|
||
const regionsPerPage = 10;
|
||
let currentPage = 1;
|
||
|
||
// Загрузка регионов
|
||
function loadRegions() {
|
||
$.getJSON('/telezab/regions/get', function(data) {
|
||
regions = data;
|
||
regions.sort((a, b) => a.region_id - b.region_id); // Сортировка по региону
|
||
renderRegions();
|
||
renderPagination();
|
||
}).fail(function() {
|
||
console.error("Не удалось получить регионы.");
|
||
});
|
||
}
|
||
|
||
// Загрузка пользователей
|
||
function loadUsers() {
|
||
$.getJSON('/telezab/users/get', function(data) {
|
||
users = data;
|
||
}).fail(function() {
|
||
console.error("Не удалось получить пользователей.");
|
||
});
|
||
}
|
||
|
||
// Отрисовка списка регионов
|
||
function renderRegions() {
|
||
regionList.empty();
|
||
const start = (currentPage - 1) * regionsPerPage;
|
||
const end = start + regionsPerPage;
|
||
const paginatedRegions = regions.slice(start, end);
|
||
|
||
paginatedRegions.forEach(region => {
|
||
const listItem = $('<a>', {
|
||
href: '#',
|
||
class: 'list-group-item list-group-item-action',
|
||
text: `${region.region_name} (${region.region_id})`,
|
||
'data-region-id': region.region_id,
|
||
'data-region-name': region.region_name
|
||
}).on('click', function() {
|
||
selectedRegionId = $(this).data('region-id');
|
||
selectedRegionName = $(this).data('region-name');
|
||
showRegionDetails();
|
||
});
|
||
regionList.append(listItem);
|
||
});
|
||
}
|
||
|
||
// Отрисовка кнопок пагинации
|
||
function renderPagination() {
|
||
pagination.empty();
|
||
const totalPages = Math.ceil(regions.length / regionsPerPage);
|
||
|
||
for (let i = 1; i <= totalPages; i++) {
|
||
const pageItem = $('<li>', {
|
||
class: `page-item ${i === currentPage ? 'active' : ''}`
|
||
}).append($('<a>', {
|
||
class: 'page-link',
|
||
href: '#',
|
||
text: i
|
||
}).on('click', function(e) {
|
||
e.preventDefault();
|
||
currentPage = i;
|
||
renderRegions();
|
||
renderPagination();
|
||
}));
|
||
pagination.append(pageItem);
|
||
}
|
||
}
|
||
|
||
// Показать детали региона
|
||
function showRegionDetails() {
|
||
userInfo.empty();
|
||
userList.empty();
|
||
curentRegion.empty(); // Очистить текущий элемент
|
||
|
||
// Найти текущий регион по selectedRegionId
|
||
const selectedRegion = regions.find(region => region.region_name === selectedRegionName);
|
||
|
||
// Проверить, что регион найден
|
||
if (selectedRegion) {
|
||
// Создать и добавить заголовок h3 с именем региона
|
||
var newHeading = $('<h3>').text(selectedRegion.region_name);
|
||
$('#curent-region').append(newHeading);
|
||
} else {
|
||
$('#curent-region').text('Регион не найден.');
|
||
}
|
||
|
||
// Фильтровать пользователей, подписанных на этот регион
|
||
const subscribedUsers = users.filter(user =>
|
||
user.subscriptions.split(', ').includes(selectedRegionId.toString())
|
||
);
|
||
|
||
// Показать список пользователей или сообщение, если подписчиков нет
|
||
if (subscribedUsers.length > 0) {
|
||
subscribedUsers.forEach(user => {
|
||
userList.append(`<li>${user.email}</li>`);
|
||
});
|
||
} else {
|
||
userInfo.text('Нет подписчиков на этот регион.');
|
||
}
|
||
}
|
||
|
||
|
||
// Инициализация
|
||
loadRegions();
|
||
loadUsers();
|
||
|
||
// Обработчики кнопок в модальном окне
|
||
$('#delete-region').on('click', function() {
|
||
// Функция удаления региона
|
||
console.log('Удалить регион', selectedRegionId);
|
||
});
|
||
|
||
$('#disable-region').on('click', function() {
|
||
// Функция отключения региона
|
||
console.log('Отключить регион', selectedRegionId);
|
||
});
|
||
|
||
$('#activate-region').on('click', function() {
|
||
// Функция активации региона
|
||
console.log('Активировать регион', selectedRegionId);
|
||
});
|
||
});
|