Telezab/static/js/regions.js
Влад Зверев 21834d7d71 Massive rework of menu,
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
2024-09-18 20:12:29 +05:00

134 lines
4.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$(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);
});
});