document.addEventListener('DOMContentLoaded', function() {
// Список всех 12 архетипов (замените на ваши названия)
const allArchetypes = [
'Innocent', 'Sage', 'Explorer', 'Hero',
'Caregiver', 'Magician', 'Ruler', 'Rebel',
'Lover', 'Jester', 'Everyman', 'Creator'
];
// Инициализируем объект для подсчета баллов
let scores = {};
allArchetypes.forEach(archetype => {
scores[archetype] = 0;
});
// Функция для получения параметров из URL
function getUrlParams() {
const params = new URLSearchParams(window.location.search);
return params;
}
// Функция для подсчета результатов
function calculateResults() {
const params = getUrlParams();
// Сбрасываем счетчики
allArchetypes.forEach(archetype => {
scores[archetype] = 0;
});
// Обрабатываем каждый вопрос (от 1 до 72)
for (let i = 1; i <= 72; i++) {
const questionName = 'question' + i;
const selectedValue = params.get(questionName);
if (selectedValue) {
// Находим выбранный ответ в DOM чтобы получить его data-атрибут
const selectedInput = document.querySelector(`input[name="${questionName}"][value="${selectedValue}"]`);
if (selectedInput) {
const archetype = selectedInput.getAttribute('data-archetype');
if (archetype && scores.hasOwnProperty(archetype)) {
scores[archetype] += 1; // Добавляем 1 балл
}
}
}
}
displayResults();
}
// Функция для отображения результатов
function displayResults() {
const topContainer = document.getElementById('top-archetypes');
const allContainer = document.getElementById('all-archetypes');
// Сортируем архетипы по убыванию баллов
const sortedArchetypes = Object.entries(scores)
.sort(([,a], [,b]) => b - a);
const totalQuestions = 72;
// Показываем топ-3 архетипа
topContainer.innerHTML = '';
sortedArchetypes.slice(0, 3).forEach(([archetype, score], index) => {
const percentage = ((score / totalQuestions) * 100).toFixed(1);
const width = Math.min(100, (score / Math.max(...Object.values(scores))) * 100);
topContainer.innerHTML += `
${percentage}% от всех ответов
`;
});
// Показываем все архетипы
allContainer.innerHTML = '';
sortedArchetypes.forEach(([archetype, score]) => {
const percentage = ((score / totalQuestions) * 100).toFixed(1);
const width = Math.min(100, (score / Math.max(...Object.values(scores))) * 100);
allContainer.innerHTML += `
`;
});
}
// Функция для получения читаемого названия архетипа
function getArchetypeName(key) {
const names = {
'Innocent': 'Невинный',
'Sage': 'Мудрец',
'Explorer': 'Искатель',
'Hero': 'Герой',
'Caregiver': 'Опекун',
'Magician': 'Маг',
'Ruler': 'Правитель',
'Rebel': 'Бунтарь',
'Lover': 'Любовник',
'Jester': 'Шут',
'Everyman': 'Простой человек',
'Creator': 'Творец'
};
return names[key] || key;
}
// Функция для поделиться результатами
window.shareResults = function() {
const top3 = Object.entries(scores)
.sort(([,a], [,b]) => b - a)
.slice(0, 3)
.map(([name, score]) => `${getArchetypeName(name)}: ${score}`)
.join(', ');
const shareText = `Мои ведущие архетипы: ${top3}. Пройди тест тоже!`;
if (navigator.share) {
navigator.share({
title: 'Мои архетипы',
text: shareText,
url: window.location.href
});
} else {
// Fallback - копирование в буфер обмена
navigator.clipboard.writeText(shareText + ' ' + window.location.href);
alert('Результаты скопированы в буфер обмена!');
}
};
// Запускаем расчет при загрузке страницы
calculateResults();
});