153 lines
6.7 KiB
JavaScript
153 lines
6.7 KiB
JavaScript
// help-users.js - Управление пользователями
|
||
let users = [];
|
||
let allUsers = [];
|
||
let filteredUsers = [];
|
||
let selectedUsers = [];
|
||
let editSelectedUsers = [];
|
||
let copySelectedUsers = [];
|
||
|
||
async function loadUsers() {
|
||
try {
|
||
const response = await fetch('/api/users');
|
||
users = await response.json();
|
||
allUsers = users;
|
||
|
||
// Получаем пользователей группы "help"
|
||
const helpUsers = users.filter(user => user.groups && user.groups.includes('Секретарь'));
|
||
filteredUsers = helpUsers;
|
||
|
||
// Показываем пользователей группы help при создании заявки
|
||
showHelpGroupUsers();
|
||
|
||
populateFilterDropdowns();
|
||
} catch (error) {
|
||
console.error('Ошибка загрузки пользователей:', error);
|
||
}
|
||
}
|
||
|
||
function populateFilterDropdowns() {
|
||
const creatorFilter = document.getElementById('creator-filter');
|
||
const assigneeFilter = document.getElementById('assignee-filter');
|
||
|
||
// Проверяем существование элементов (они есть только на странице help.html)
|
||
if (!creatorFilter || !assigneeFilter) {
|
||
console.log('Фильтры не найдены (возможно, не на странице help.html)');
|
||
return;
|
||
}
|
||
|
||
creatorFilter.innerHTML = '<option value="">Все заказчики</option>';
|
||
assigneeFilter.innerHTML = '<option value="">Все исполнители (группа "help")</option>';
|
||
|
||
// Для заказчиков показываем всех пользователей
|
||
users.forEach(user => {
|
||
const creatorOption = document.createElement('option');
|
||
creatorOption.value = user.id;
|
||
creatorOption.textContent = `${user.name} (${user.login})`;
|
||
creatorFilter.appendChild(creatorOption);
|
||
});
|
||
|
||
// Для исполнителей показываем только пользователей группы "help"
|
||
const helpUsers = users.filter(user => user.groups && user.groups.includes('Секретарь'));
|
||
helpUsers.forEach(user => {
|
||
const assigneeOption = document.createElement('option');
|
||
assigneeOption.value = user.id;
|
||
assigneeOption.textContent = `${user.name} (${user.login}) - группа "help"`;
|
||
assigneeFilter.appendChild(assigneeOption);
|
||
});
|
||
}
|
||
|
||
// Функция для отображения пользователей группы help
|
||
function showHelpGroupUsers() {
|
||
const container = document.getElementById('help-group-users');
|
||
|
||
// Проверяем существование элемента (он есть только на странице help.html)
|
||
if (!container) {
|
||
console.log('Контейнер help-group-users не найден (возможно, не на странице help.html)');
|
||
return;
|
||
}
|
||
|
||
const helpUsers = users.filter(user => user.groups && user.groups.includes('Секретарь'));
|
||
|
||
if (helpUsers.length === 0) {
|
||
container.innerHTML = '<div class="help-group-notice"><i class="fas fa-exclamation-triangle"></i> Нет пользователей в группе "help"</div>';
|
||
return;
|
||
}
|
||
|
||
container.innerHTML = `
|
||
<div class="help-group-notice">
|
||
<i class="fas fa-info-circle"></i> Заявка будет автоматически назначена ${helpUsers.length} пользователям группы "help":
|
||
</div>
|
||
<div class="help-users-list">
|
||
${helpUsers.map(user => `
|
||
<div class="help-user-item">
|
||
<i class="fas fa-user"></i>
|
||
<span class="help-user-name">${user.name}</span>
|
||
<span class="help-user-email">(${user.email})</span>
|
||
</div>
|
||
`).join('')}
|
||
</div>
|
||
`;
|
||
}
|
||
|
||
// Старые функции фильтрации оставляем, но они теперь не используются для выбора исполнителей
|
||
function filterUsers() {
|
||
const searchInput = document.getElementById('user-search');
|
||
if (!searchInput) return; // Элемент есть только на странице help.html
|
||
|
||
const search = searchInput.value.toLowerCase();
|
||
// Фильтруем пользователей группы "help"
|
||
filteredUsers = users.filter(user =>
|
||
user.groups && user.groups.includes('Секретарь') && (
|
||
user.name.toLowerCase().includes(search) ||
|
||
user.login.toLowerCase().includes(search) ||
|
||
user.email.toLowerCase().includes(search)
|
||
)
|
||
);
|
||
// Не рендерим чеклист, так как выбираем всех пользователей группы help
|
||
}
|
||
|
||
function filterEditUsers() {
|
||
// Не используется, так как заявка автоматически назначается всем пользователям группы help
|
||
}
|
||
|
||
function filterCopyUsers() {
|
||
// Не используется, так как заявка автоматически назначается всем пользователям группы help
|
||
}
|
||
|
||
// Старые функции рендеринга оставляем для совместимости, но они не будут использоваться
|
||
function renderUsersChecklist() {
|
||
// Не рендерим чеклист, так как выбираем всех пользователей группы help
|
||
}
|
||
|
||
function renderEditUsersChecklist(filtered = users) {
|
||
// Не рендерим чеклист, так как заявка автоматически назначается всем пользователям группы help
|
||
}
|
||
|
||
function renderCopyUsersChecklist(filtered = users) {
|
||
// Не рендерим чеклист, так как заявка автоматически назначается всем пользователям группы help
|
||
}
|
||
|
||
// Старые функции выбора пользователей оставляем для совместимости
|
||
function toggleUserSelection(checkbox, userId) {
|
||
if (checkbox.checked) {
|
||
selectedUsers.push(userId);
|
||
} else {
|
||
selectedUsers = selectedUsers.filter(id => id !== userId);
|
||
}
|
||
}
|
||
|
||
function toggleEditUserSelection(checkbox, userId) {
|
||
if (checkbox.checked) {
|
||
editSelectedUsers.push(userId);
|
||
} else {
|
||
editSelectedUsers = editSelectedUsers.filter(id => id !== userId);
|
||
}
|
||
}
|
||
|
||
function toggleCopyUserSelection(checkbox, userId) {
|
||
if (checkbox.checked) {
|
||
copySelectedUsers.push(userId);
|
||
} else {
|
||
copySelectedUsers = copySelectedUsers.filter(id => id !== userId);
|
||
}
|
||
} |