init Questionnaire
This commit is contained in:
67
server/routers/questioneer/public/static/js/index.js
Normal file
67
server/routers/questioneer/public/static/js/index.js
Normal file
@@ -0,0 +1,67 @@
|
||||
/* 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);
|
||||
});
|
||||
Reference in New Issue
Block a user