67 lines
2.7 KiB
JavaScript
67 lines
2.7 KiB
JavaScript
/* global $, window, document */
|
||
$(document).ready(function() {
|
||
// Функция для получения базового пути API
|
||
const getApiPath = () => {
|
||
// Извлекаем базовый путь из URL страницы
|
||
const pathParts = window.location.pathname.split('/');
|
||
// Если последний сегмент пустой (из-за /) - удаляем его
|
||
if (pathParts[pathParts.length - 1] === '') {
|
||
pathParts.pop();
|
||
}
|
||
|
||
// Путь до корня приложения
|
||
return pathParts.join('/') + '/api';
|
||
};
|
||
|
||
// Функция для загрузки списка опросов
|
||
const loadQuestionnaires = () => {
|
||
$.ajax({
|
||
url: getApiPath() + '/questionnaires',
|
||
method: 'GET',
|
||
success: function(result) {
|
||
if (result.success) {
|
||
renderQuestionnaires(result.data);
|
||
} else {
|
||
$('#questionnaires-container').html(`<p class="error">Ошибка: ${result.error}</p>`);
|
||
}
|
||
},
|
||
error: function(error) {
|
||
console.error('Error loading questionnaires:', error);
|
||
$('#questionnaires-container').html('<p class="error">Не удалось загрузить опросы. Пожалуйста, попробуйте позже.</p>');
|
||
}
|
||
});
|
||
};
|
||
|
||
// Функция для отображения списка опросов
|
||
const renderQuestionnaires = (questionnaires) => {
|
||
if (!questionnaires || questionnaires.length === 0) {
|
||
$('#questionnaires-container').html('<p>У вас еще нет созданных опросов.</p>');
|
||
return;
|
||
}
|
||
|
||
// Получаем базовый путь (для работы и с /questioneer, и с /ms/questioneer)
|
||
const basePath = window.location.pathname.endsWith('/')
|
||
? window.location.pathname
|
||
: window.location.pathname + '/';
|
||
|
||
const questionnairesHTML = questionnaires.map(q => `
|
||
<div class="questionnaire-item">
|
||
<h3>${q.title}</h3>
|
||
<p>${q.description || 'Нет описания'}</p>
|
||
<p>Создан: ${new Date(q.createdAt).toLocaleString()}</p>
|
||
<div class="questionnaire-links">
|
||
<a href="${basePath}admin/${q.adminLink}" class="btn btn-small">Редактировать</a>
|
||
<a href="${basePath}poll/${q.publicLink}" class="btn btn-small btn-primary" target="_blank">Смотреть как участник</a>
|
||
</div>
|
||
</div>
|
||
`).join('');
|
||
|
||
$('#questionnaires-container').html(questionnairesHTML);
|
||
};
|
||
|
||
// Инициализация страницы
|
||
loadQuestionnaires();
|
||
|
||
// Обновление данных каждые 30 секунд
|
||
setInterval(loadQuestionnaires, 30000);
|
||
});
|